2013-05-02 3 views
0

30 분 안에 한 번만 서비스를 실행할 수있는 간단한 방법을 말해 줄 수 있습니까?30 분에 한 번 서비스를 실행하는 방법은 무엇입니까?

이것은 어떤 신체도 30 분에 한 번 실행하는 방법을 말할 수는 없습니다.

시스템 부팅시에도 내 응용 프로그램을 시작하기 위해 이것을 사용합니다 .. ..?

나는이 일을하고있다 :

autostart.java

public class autostart extends BroadcastReceiver 
{ 
    public void onReceive(Context arg0, Intent arg1) 
    { 
     Intent intent = new Intent(arg0,back_process.class); 
     arg0.startService(intent); 
     Log.i("Autostart", "started"); 
    } 
} 

Back_Process.java

public class gps_back_process extends Service 
    { 
     private static final String TAG = "MyService"; 
     @Override 
     public IBinder onBind(Intent intent) { 
      return null; 
     } 
     public void onDestroy() { 

      Toast.makeText(this, "SERVICE STOPPED ..!", Toast.LENGTH_LONG).show(); 
      Log.d(TAG, "onDestroy"); 
     } 

     @Override 
     public void onStart(Intent intent, int startid) 
     { 
      Intent intents = new Intent(getBaseContext(),MainActivity.class); 
      intents.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      startActivity(intents); 
      Toast.makeText(this, "SERVICE STARTED", Toast.LENGTH_LONG).show(); 
      Log.d(TAG, "onStart"); 
     } 
    } 

감사합니다!

+0

가 모든 권한을 경우에도 – user1969053

+0

사용 완료 시스템 부팅에 대한 권한을 추가 한 사용자가 앱을 명시 적으로 (Intent를 실행하여) 시작하지 않으면 애플리케이션은 "중지됨 상태"로 유지되고 ** BOOT_COMPLETED 브로드 캐스트를받지 못합니다 ** – AnilPatel

+0

예 후 30 분 동안 pandding 의도 매니페스트 ... –

답변

1

이 시도 :

private AlarmManager alarmMgr; 
private PendingIntent alarmIntent; 

alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); 
Intent intent = new Intent(context, AlarmReceiver.class); 
alarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0); 

alarmMgr.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, 
     SystemClock.elapsedRealtime() + 
     60 * 1000, alarmIntent); 
1

AlarmManager 및 그 방법 setRepeating()을 사용하십시오. 얼마 전 나는 similar question에게 물었다. 나의 간격은 24 시간 이었지만, 너의 것의 0.5 시간은 같은 이야기이다.