我在使用AlarmManager
生成的广播更新应用小部件时运气不佳。这就是我所做的:
初始化AlarmManager
_AppWidgetProvider#onEnabled
AlarmManager alarms = (AlarmManager) context.getSystemService(
Context.ALARM_SERVICE);
alarms.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime(), 60000, pendingIntent);
我还定义了广播接收器,它只监听由AlarmManager
. 当更新被触发时,代码运行AsyncTask
进行网络调用。当AsyncTask
完成 ( onPostExecute
) 时,它使用先前获得的实例AppWidgetManager
来更新小部件。这一切实际上运行良好,直到在日志中我看到消息"Process com.foo.myapp (pid 12345) has died"
,之后AlarmManager
再也不会触发另一个更新。
我是否需要进行某种检查以重新启动警报?例如,当用户访问小部件的父应用程序时?如果我的应用在请求过程中死机,如何确保我可以完成长时间运行的任务并返回到小部件?