引导系统后更新小部件

问题描述

启动系统后,我的小部件将更新约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 (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...