我在使用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再也不会触发另一个更新。
我是否需要进行某种检查以重新启动警报?例如,当用户访问小部件的父应用程序时?如果我的应用在请求过程中死机,如何确保我可以完成长时间运行的任务并返回到小部件?