ACTION_TIME_TICK 广播没有被 AppWidgetProvider 捕获
ACTION_TIME_TICK Broadcast not being caught inside AppWidgetProvider
起初我认为它会因为扩展 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)
}
}
您的代码应该会崩溃,因为您无法通过 onReceive()
从提供给 BroadcastReceiver
的 Context
注册 BroadcastReceiver
。 AppWidgetProvider
是 BroadcastReceiver
的子类; onUpdate()
等方法是从其 onReceive()
方法中调用的。
即使这不再像以前那样崩溃,它也不会可靠地工作。您的进程可以在 onUpdate()
returns.
后的毫秒内终止
欢迎您将此 Intent
操作添加到您的 <intent-filter>
以供您 Widget
使用。请记住,当您覆盖 onReceive()
时,如果操作不是您自己处理的操作,请链接到超类,因此可以调用 onUpdate()
和 kin。
起初我认为它会因为扩展 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)
}
}
您的代码应该会崩溃,因为您无法通过 onReceive()
从提供给 BroadcastReceiver
的 Context
注册 BroadcastReceiver
。 AppWidgetProvider
是 BroadcastReceiver
的子类; onUpdate()
等方法是从其 onReceive()
方法中调用的。
即使这不再像以前那样崩溃,它也不会可靠地工作。您的进程可以在 onUpdate()
returns.
欢迎您将此 Intent
操作添加到您的 <intent-filter>
以供您 Widget
使用。请记住,当您覆盖 onReceive()
时,如果操作不是您自己处理的操作,请链接到超类,因此可以调用 onUpdate()
和 kin。