android关机流程-framework部分

关机在ShutdownThread.java 中,顾名思义,他是一个线程,就在一个线程中实现关机,主函数就是shutdown(final Context context, boolean confirm) 


  public static void shutdown(final Context context, boolean confirm) {
        mReboot = false;
        mRebootSafeMode = false;
        shutdownInner(context, confirm);
    }

调用到shutdownInner(context, confirm)

    static void shutdownInner(final Context context, boolean confirm) {  
         beginShutdownSequence(context);
    }
再调用到 beginShutdownSequence(context);,在这个方法中会调用下面一句启动这个线程,sInstance是ShutdownThread的实例

 sInstance.start();

这样子就会跑到线程的run方法啦

    public void run() {
            running();
    }

    public void running() {
      rebootOrShutdown(mReboot, mRebootReason);
        };   
 public static void rebootOrShutdown(boolean reboot, String reason) {
        PowerManagerService.lowLevelShutdown();
  
    }

最后跑到了PowerManagerService中去了

  public static void lowLevelShutdown() {
        SystemProperties.set("sys.powerctl", "shutdown");
    }
最后设了个属性就跑路了,framework的东西就跑完了。

可以看到最后关机只需要设置个属性就可以了。

所以跳过繁重的步骤,通过命令行 adb shell setprop sys.powerctl shutdown 就可以关机啦!!



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值