如何在Android API 23中使用AlarmManager保持服务的活动?
我需要每1分钟更新一次方法。 这是我的服务:
public class ApplicationService extends Service {
@Override
public IBinder onBind(Intent paramIntent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d(ApplicationService.class.getName(), "start");
UpdateUtils updateUtils = UpdateUtils.getInstance(getApplicationContext());
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(Intent.ACTION_DATE_CHANGED);
intentFilter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
intentFilter.addAction(Intent.ACTION_TIME_CHANGED);
intentFilter.addAction(Intent.ACTION_SCREEN_ON);
intentFilter.addAction(Intent.ACTION_TIME_TICK);
registerReceiver(new BroadcastReceivers(), intentFilter);
Utils utils = Utils.getInstance(getBaseContext());
utils.loadApp();
updateUtils.update(true);
return START_STICKY;
}
}
答案 0 :(得分:0)
抱歉无法理解您的问题,为什么需要警报管理器来保持服务的活动?
服务始终在后台运行。如果由于内存限制而被杀死,您可以通过在onBind()方法中将其定义为STICKY来要求OS重新启动它
更新
那么你不想让你的服务保持活力。我的意思是,你陈述查询的方式令人困惑。我现在理解的是,你希望在每个&xx; xx'之后执行一些操作。时间。
您可以执行以下操作:
使用setExact()
的{{1}}方法。执行接收者AlarmManager
中所需的操作。作为onReceive()的最后一步的一部分,再次使用setExact()方法。
如果执行时间不准确,您也可以使用onReceive()
。
答案 1 :(得分:0)
如果您担心应用程序被锁定,您是否尝试过使用唤醒锁?
http://developer.android.com/reference/android/os/PowerManager.html