基本上没有可靠的方法来做后台工作。但是有一些解决方法。
这是我的解决方案:
在您的类扩展应用程序中:
private AlarmManager awakeAlarmMgr;
private PendingIntent awakeAlarmIntent;
public void startBackService() {
Log.d(TAG,"BACK SERVICE STARTED")
// START ALL SERVICES
startStepService();
startLocationService();
setAllReminders();
// SET AN ALARM TO KEEP ALL SERVICES ALIVE
startStayAwakeAlarm();
}
private void startStayAwakeAlarm() {
awakeAlarmMgr = (AlarmManager) getSystemService(ALARM_SERVICE);
if(awakeAlarmIntent!=null)
awakeAlarmMgr.cancel(awakeAlarmIntent);
Intent intent = new Intent(context, StayAwakeReceiver.class);
awakeAlarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
awakeAlarmMgr.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime() + AlarmManager.INTERVAL_HALF_HOUR,
AlarmManager.INTERVAL_HALF_HOUR, awakeAlarmIntent);
}
在 StayAwakeReceiver.java 中:
public class StayAwakeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG,"STAY AWAKE!!!");
AppController.getInstance().startBackService();
}
}
不要忘记在您的清单中声明接收者:
<receiver android:name=".receiver.StayAwakeReceiver" />
并调用startBackService()您的应用程序的 onCreate