Android在小部件中使用应用程序上下文来实现挂起的意图
WidgetProvider按钮将使用Android在小部件中使用应用程序上下文来实现挂起的意图,android,widget,android-intent,Android,Widget,Android Intent,WidgetProvider按钮将使用PendingEvent进行通信。 在WidetProvider的onUpdate(Context…方法中,出现以下行: PendingIntent buttonPendingIntent = PendingIntent.getBroadcast(context, 0, buttonIntent, PendingIntent.FLAG_UPDATE_CURRENT); widget manager android正在传入哪个上下文 使用context.ge
PendingEvent
进行通信。在WidetProvider的
onUpdate(Context…
方法中,出现以下行:
PendingIntent buttonPendingIntent = PendingIntent.getBroadcast(context, 0, buttonIntent, PendingIntent.FLAG_UPDATE_CURRENT);
widget manager android正在传入哪个上下文
使用
context.getApplicationContext()
作为PendingContent
是否可以?正如我所发现的,小部件冻结是一段特定的时间和不同的应用程序条件,即使调用了onUpdate。使用context.getApplicationContext()
似乎有帮助。您的WidgetProvider.onUpdate()
是AppWidgetManager.ACTION\u APPWIDGET\u UPDATE广播的结果。看
Javadoc说:
因此,请检查您是否在
onUpdate()
中没有执行任何长时间运行的任务,因为这可能是您遇到冻结的原因。我所做的只是使用应用程序上下文注册一些空广播接收器,以便检查某些广播的值。这只是上下文。registerReceiver(null,IntentFilter)筛选器正在广播中。我认为这是一个快速的行动?问题似乎是在调用onUpdate时,按钮上添加了无效的意图。我验证了正在调用更新,但什么也没发生。最后,我切换到context.applicationContext()来创建挂起的意图。不确定传入了哪个上下文以及这可能有帮助的原因,但它似乎解决了这个问题。顺便说一句,您知道如何检查添加到按钮的未决意图吗。如果它再次锁定,我希望有一种方法来看看点击是否成功。可怜的人的调试器是我在这种情况下通常使用的:当点击发生时,记录一行到logcat。
...you should never perform long-running operations in it...