zoukankan      html  css  js  c++  java
  • android Service开机启动及debug

    开机启动一个service需要做的工作如下:

    1、开发一个receiver用于接收系统广播;

    public class BootReceiver extends BroadcastReceiver {
        public static final String TAG = "bootReceiver";
        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction().toString();
            if (action.equals(Intent.ACTION_BOOT_COMPLETED)) {
                Intent service = new Intent(context, LocateService.class);
                context.startService(service);
                return;
            }
        }
    }

    2、添加mainifest,配合广播的接收和添加权限;

    <receiver android:name="com.example.receiver.BootReceiver" >
                <intent-filter>
                    <action android:name="android.intent.action.BOOT_COMPLETED" >
    </action> </intent-filter> </receiver> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

    3、完成service部分。

    调试service:

    在Android中service的调试和普通的Application不同,如果仅仅设置断点的话,调试器是不会在你的断点处停下来的,解决方法就是:
    在代码中声明,以便让调试器能到你声明的地方。你只需加入下面这一句代码即可:
    android.os.Debug.waitForDebugger();
    你的断点可以设置在这句调用后面任何地方。

    经验总结:

    1、2.3版本以后 系统提供快速启动选项,如果使用,系统不会发开机完成的系统广播;
    2、3.1以后,安装程序要启动一次才会运行接受系统广播,为了防止恶意的内置应用;
    3、手机软件如360,定制系统如小米等,会设置禁止应用自启动,如果不在白名单,同样收不到系统广播;
    
    4、不调试的时候要把 android.os.Debug.waitForDebugger(); 去掉,否则应用会启动黑屏,等待调试;
  • 相关阅读:
    软件体系架构复习要点
    Operating System on Raspberry Pi 3b
    2019-2020 ICPC North-Western Russia Regional Contest
    2019 ICPC ShenYang Regional Online Contest
    2019 ICPC XuZhou Regional Online Contest
    2019 ICPC NanChang Regional Online Contest
    2019 ICPC NanJing Regional Online Contest
    Codeforces Edu Round 72 (Rated for Div. 2)
    Codeforces Round #583 (Div.1+Div.2)
    AtCoder Beginning Contest 139
  • 原文地址:https://www.cnblogs.com/sudawei/p/3417684.html
Copyright © 2011-2022 走看看