【发布时间】:2010-12-24 06:19:48
【问题描述】:
我在使用AlarmManager 生成的广播更新应用小部件时运气不佳。这是我的工作:
在AppWidgetProvider#onEnabled上初始化AlarmManager
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 再也不会触发另一个更新。
我是否需要进行某种检查以重新启动警报?例如,当用户访问小部件的父应用程序时?如果我的应用在请求过程中死机,如何确保我可以完成长时间运行的任务并返回到小部件?
【问题讨论】:
标签: android android-asynctask android-appwidget alarmmanager