【发布时间】:2016-08-09 17:29:19
【问题描述】:
我有一个应用程序在后台运行时每 10 分钟执行一次由警报触发的服务。即使操作系统杀死了应用程序(因此它已经死了并且必须重新启动),我希望警报继续响起,并且只有在用户实际从最近的应用程序中删除应用程序或从设置中强制终止它(或已注销但这已经有效)。我尝试了许多不同的方法,最近我尝试了这个http://www.dotkam.com/2011/01/10/android-prefer-alarms-and-intent-receivers-to-services/,没有任何运气。我的闹钟看起来像这样。
if(ActivityLifecycleHandler.isApplicationInForeground()) {
return; // If App is in foreground do not start alarm!
}
String alarm = Context.ALARM_SERVICE;
AlarmManager am = ( AlarmManager ) context.getSystemService( alarm );
Intent intent = new Intent(locationBroadcastAction);
PendingIntent pi = PendingIntent.getBroadcast( context.getApplicationContext(), 0, intent, 0 );
int type = AlarmManager.ELAPSED_REALTIME_WAKEUP;
// Set trigger time to 0, because want to fire off the first one instantly
am.setRepeating( type, 0, ONE_MINUTE, pi );
还有广播接收器:
public class LocationBroadcastReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent ) {
Intent myIntent = new Intent( context, LocationService.class );
context.startService( myIntent );
}
}
知道我做错了什么吗?一切正常,直到操作系统杀死应用程序。
【问题讨论】:
标签: android alarmmanager