android开机没有收到开机广播

来源:互联网 发布:小米软件推送关闭 编辑:程序博客网 时间:2024/05/16 10:06
android开机没有收到发送开机广播会导致很多问题,比如无法待机,或者进行网络升级,一堆问题。
这个很大的原因是launcher起来后一下就跳转到另一个apk,导致PowerManagerService注册的广播接收器没有接收到BOOT_COMPLETE,导致无法待机

待机的解决方法可以是另外增加对开机动画结束的监听:
文件路径:  frameworks/base/services/java/com/android/server/power/PowerManagerService.java
            
            private static boolean ifBootCompleteSentBeforeWeStartListenning = false;
            
            Slog.d(TAG, "BootCompletedReceiver get bootCompleted");
  2515 +     if(!ifBootCompleteSentBeforeWeStartListenning){
  2516 +             startWatchingForBootAnimationFinished();
  2517 + ifBootCompleteSentBeforeWeStartListenning = true;
    2518 +  }

但是这样子只能是接收到开机广播,开机还不算真正的完成,至少ActivityManagerService.java 里面有个finishBooting还不会走到,sys.boot_completed,dev.bootcomplete属性还没有设

解决的一个办法是launcher跳转的时候加个延迟


public class MainActivity extends Activity {
    
    private static final String TAG = "Launcher-MainActivity";


    
    @Override
    protected void onCreate(Bundle icicle) {
        super.onCreate(icicle);
    }
    
    protected void onResume() {
        super.onResume();
        
        new Thread(new Runnable() {
            @Override
            public void run() {
                try{
                    Log.i(TAG, "sleep200");
                    Thread.sleep(200);
                }catch(Exception e){
                    e.printStackTrace();
                }
                Intent intent = new Intent();
                ComponentName com = new ComponentName("com.amt.zeroconfig","com.amt.zeroconfig.MainActivity");
                intent.setComponent(com);
                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(intent);
            }
        }).start();       
}
}

阅读全文
0 0
原创粉丝点击