可以使用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+的后台服务政策,以保护用户免受可能会损耗电池和网络的服务。请检查解决方案:) –