可以使用AlarmManager
link 創建服務器類:
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);
非常感謝你,它的工作!!!!但我想知道我的相同代碼沒有在華爲p9lite(API 24)上做任何調度,而且在Qmobile S5(API 21)上進行了相同的代碼調度。可能的原因是什麼? –
這是關於api 23+的後臺服務政策,以保護用戶免受可能會損耗電池和網絡的服務。請檢查解決方案:) –