2013-03-28 37 views
0

我已在我的項目中提供服務,並且我希望在每2分鐘後開始啓動。我正在使用下面的代碼,但它不能正常工作。在特定時間後啓動服務android

public class ScheduleSync extends BroadcastReceiver{ 

    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     AlarmManager service = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 

     Intent i = new Intent(context, StartMyServiceReceiver.class); 
     PendingIntent pending = PendingIntent.getBroadcast(context, 0, i,PendingIntent.FLAG_CANCEL_CURRENT); 
     Calendar cal = Calendar.getInstance(); 
     service.setInexactRepeating(AlarmManager.RTC_WAKEUP,cal.getTimeInMillis(), 60000*2, pending); 

    } 

} 



public class StartMyServiceReceiver extends BroadcastReceiver 
{  
    public void onReceive(Context context, Intent intent) 
    { 
     Toast.makeText(context, "receive broadcast", Toast.LENGTH_LONG).show(); 
     Log.d("StartMyServiceReceiver", "receive broadcast"); 
     Intent service = new Intent(context, myservice.class); 
     context.startService(service); 
    } 
} 

好心幫我解決這個問題。當我看到taskmanager myservice正在後端運行時。

+1

只需使用蒂莫任務:http://stackoverflow.com/q/6477608/1168654和http://stackoverflow.com/q/2161750/1168654 – 2013-03-28 06:40:36

回答

0

爲什麼要用AlarmManager

只需使用Thread.sleep(xxxx)

public class ScheduleSync extends BroadcastReceiver{ 
    private Context context; 
    private void startOtherService(){ 
     Intent i = new Intent(context, StartMyServiceReceiver.class); 
     context.startService(i); 
    } 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     this.context = context; 
     new Thread(new Runnable(){ 
      public void run(){ 
       try{ 
        Thread.sleep(2*60*1000); 
        startOtherService(); 
       }catch(InterruptedException e){ 
        e.printStackTrace(); 
       } 
      } 
     }).start(); 
    } 

} 
+0

不工作我的情況...當我看到taskmanager服務正在運行。在服務我在狀態欄發送通知。根據上面的代碼,它應該每2分鐘發送一次通知,但不這樣做。 – user2064024 2013-03-28 07:12:21

+0

嘗試將第二個服務改爲service而不是broadcastreceiver。第二個不能是廣播接收器,因爲你知道通知何時到達,所以你只需將它發送給另一個服務 – JackTurky 2013-03-28 07:15:03

+0

我認爲這在廣播reciver中不起作用。因爲在處理廣播時,應用程序被賦予固定的一組時間(目前爲10秒)以完成其工作。如果在那段時間內沒有完成,應用程序被認爲是行爲不端,並且它的進程立即被拋入後臺狀態,如果需要的話會被殺死。檢查此更多詳細信息http://stackoverflow.com/a/7460334/1168654 – 2013-03-28 07:26:13

相關問題