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();
}
}
这个很大的原因是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
- android开机没有收到开机广播
- android 4.0以上无法收到开机广播
- 如何解决App无法收到android开机广播
- 如何解决App无法收到android开机广播
- android 应用无法收到开机广播,无法收到sd卡MOUNTED广播
- android接收开机广播
- android开机启动广播
- Android 开机启动广播
- Android 监听开机广播
- Android开机广播
- Android应用在安装后未启动的情况下无法收到开机等各类广播
- Xamarin.Android 开机广播、开机自启动
- 解决小米手机无法收到开机广播的问题
- 解决小米手机无法收到开机广播的问题
- android-BroadcastReceiver 系统开机广播
- Android 4.0 开机启动广播
- Android开机、关机广播监听
- android接受不到开机广播
- 欢迎使用CSDN-markdown编辑器
- Linux List
- 面试-链表逆置 作业手写一个单链表,并且实现单链表元素的逆置,(a0, a1,a2,a3,..an)-> (an,an-1,… a1, a0),算法的空间复杂度和时间复杂度经可能低
- 指针的引用,举例数据结构中的应用
- 文章标题
- android开机没有收到开机广播
- 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
- better-scroll上拉加载 和下拉刷新 的使用(基于vue写成组件的形式)
- springmvc项目解决的一些主要问题
- sql日期
- JVM垃圾回收CMS
- android使用xml自定义button样式
- 经验总结-完整介绍Android Studio中Git的使用之.gitignore和README文件的说明(五)
- Presto学习-presto介绍