我不具有更新与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永远不会触发另一次更新运行良好。

我是否需要有某种形式的检查,这将重新启动报警?例如,当用户访问该控件的父应用程序?我如何确保我能完成的长时间运行的任务,回来的小部件,如果我的应用程序中请求的过程中死机?

有帮助吗?

解决方案

  

当更新被触发代码运行   的AsyncTask,使一个网络的呼叫。

如果这是BroadcastReceiver内,这是行不通的。你不能从一个BroadcastReceiverAsyncTask安全叉线有效地派生一个线程异步完成其任务。

相反,你应该委托长时间运行的工作提高到一个服务从 BroadcastReceiver报警开始。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top