问题描述
启动系统后,我的小部件将更新约30秒。 我为捕获意图“ android.intent.action.BOOT_COMPLETED”创建了广播接收器,但没有任何反应。 Bbroadcast接收器已在服务中注册,因为我更新了小部件。
服务:
public class UpdateService extends Service implements UpdateWithScreenResume {
private final String TAG = "UpdateService";
private CatchScreeOffOnBootReceiver catchScreeOffOnBootReceiver;
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
catchScreeOffOnBootReceiver = new CatchScreeOffOnBootReceiver();
catchScreeOffOnBootReceiver.setUpdateWithScreenResume(this); // interface for reaction on boot
IntentFilter screenIntentFilter = new IntentFilter();
screenIntentFilter.addAction("android.intent.action.BOOT_COMPLETED");
registerReceiver(catchScreeOffOnBootReceiver,screenIntentFilter);
}
@Override
public int onStartCommand(Intent intent,int flags,int startId) {
return START_REDELIVER_INTENT;
}
private void sendIntentToUpdateWidget() {
// send Pending Intent to update widget
}
@Override // impl interface UpdateWithScreenResume
public void screenOFF() {
unregisterReceiver(catchTickIntentReceiver);
}
@Override // impl interface UpdateWithScreenResume
public void screenON() {
sendIntentToUpdateWidget();
registerReceiver(catchTickIntentReceiver,new IntentFilter("android.intent.action.TIME_TICK"));
}
@Override
public void onDestroy() {
unregisterReceiver(catchScreeOffOnBootReceiver);
super.onDestroy();
}}
和播客接收器:
public class CatchScreeOffOnBootReceiver extends BroadcastReceiver {
private final String TAG = "CatchScreeOffOnBoot";
private final String SCREEN_ON = "android.intent.action.SCREEN_ON";
private final String SCREEN_OFF = "android.intent.action.SCREEN_OFF";
private final String SCREEN_BOOT = "android.intent.action.BOOT_COMPLETED";
private UpdateWithScreenResume updateWithScreenResume;
@Override
public void onReceive(Context context,Intent intent) {
Log.i(TAG,"onReceive: " + intent.getAction());
switch (intent.getAction()) {
case SCREEN_ON:
case SCREEN_BOOT:
Toast.makeText(context,TAG,Toast.LENGTH_LONG).show();
updateWithScreenResume.screenON();
break;
case SCREEN_OFF:
updateWithScreenResume.screenOFF();
break;
}
}
public void setUpdateWithScreenResume(UpdateWithScreenResume updateWithScreenResume) {
this.updateWithScreenResume = updateWithScreenResume;
}
}
广播接收器对action.ScreenOn和action.ScreenOff的反应显着,但对action.Completed_Boot没有反应
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)