2017-04-26 73 views
0

我只是Android的新手,請大家多多幫助。我試圖使用JobServicecom.firebase.jobdispatcher.JobService在我的Android應用程序,但據我研究,我看到JOB服務運行在主線程和只要應用程序運行在後臺或forground它一直在做它的時間表工作。在Android中不斷運行JobService - 即使應用程序死亡

但問題是我想做的事情即使從應用程序托盤中刪除應用程序,也可以讓用戶在每30分鐘後說出位置。我很困惑在以下幾點

  1. 如果我運行一個棘手的服務它不給我安排
  2. 如果我使用招聘服務它給調度但作爲終止應用 關閉。

有沒有什麼辦法可以運行一個即使在應用程序被終止後也能運行的服務,還可以執行任務計劃?

回答

0

可以使用AlarmManagerlink 創建服務器類:

public class MService extends IntentService { 
    public MyTestService() { 
     super("MService"); 
    } 

    @Override 
    protected void onHandleIntent(Intent intent) { 
     // Your firebase task 
    } 
} 

那麼你的廣播

public class MReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
    Intent in = new Intent(context, MService.class); 
    context.startService(in); 
    } 
} 

終於

Intent intent = new Intent(getApplicationContext(), MReceiver.class); 
final PendingIntent pIntent = PendingIntent.getBroadcast(this, MReceiver.REQUEST_CODE,intent, PendingIntent.FLAG_UPDATE_CURRENT); 
long firstMillis = System.currentTimeMillis(); 
AlarmManager alarm = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE); 
alarm.setInexactRepeating(AlarmManager.RTC_WAKEUP, firstMillis, AlarmManager.INTERVAL_HALF_HOUR, pIntent); 
+0

非常感謝你,它的工作!!!!但我想知道我的相同代碼沒有在華爲p9lite(API 24)上做任何調度,而且在Qmobile S5(API 21)上進行了相同的代碼調度。可能的原因是什麼? –

+0

這是關於api 23+的後臺服務政策,以保護用戶免受可能會損耗電池和網絡的服務。請檢查解決方案:) –

相關問題