起初我认为它会按原样运作,因为它会扩展BroadcastReciever
,但事实并非如此。
所以onEnabled
我已将其注册为所需的意图ACTION_TIME_TICK
。
然而,它从未收到过。
如何正确捕获广播,以便我可以更新小部件的时钟,以及刷新小部件上的某些值。在分钟标记上这样做是理想的时间。
public class Widget extends AppWidgetProvider {
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
Log.v("WIDGET", "Recieved: " + intent.getAction());
}
@Override
public void onDisabled(Context context) {
super.onDisabled(context);
//Turn off auto update
context.unregisterReceiver(this);
}
@Override
public void onEnabled(Context context) {
super.onEnabled(context);
context.registerReceiver(this, new IntentFilter(Intent.ACTION_TIME_TICK));
// Start auto update on Enable (widget exists)
}
}
答案 0 :(得分:1)
您的代码应该崩溃,因为您无法通过BroadcastReceiver
向Context
提供的BroadcastReceiver
注册onReceive()
。 AppWidgetProvider
是BroadcastReceiver
的子类;类似onUpdate()
的方法是从onReceive()
方法调用的。
即使这种方式不再像过去那样崩溃,它也无法可靠地运行。在onUpdate()
返回后,您的流程可以在几毫秒内终止。
我们欢迎您为Intent
<intent-filter>
添加Widget
行动。请记住,当您覆盖onReceive()
时,如果操作不是您自己处理的操作,则链接到超类,因此可以调用onUpdate()
和亲属。