前言

Android调试时,有序需要修改系统的属性。使用adb shell setprop xxxx 后,重启机器后就恢复了。

然后实际中,有些属性如果没重启,会遇到属性值在代码中不生效,重启后,属性值又还原的问题。

比如SurfaceView的一个日志打印DEBUG开关,通过adb改变debug.surfaceview.log属性值后需要重启才有效。

SurfaceView中的DEBUG

public class SurfaceView extends View implements ViewRootImpl.WindowStoppedCallback {
    private static final String TAG = "SurfaceView";
    private static final boolean DEBUG = SystemProperties.getBoolean(
            "debug.surfaceview.log", false);
    ......
}

解决上面方法有如下两种:

改SurfaceView找那个的DEBUG的值为true

缺点就是SurfaceView的日志一直开放着,无法关闭。

通过adb修改debug.surfaceview.log的默认属性,机器断电后恢复默认。

缺点:需要重启SurfaceView,也就是framework

优点:方便可控,断电即恢复默认。

重启framework

百度了一下,发现还是有方法只重启framework的。

Android早就为我们这些开发者想好了,可以通过adb命令来重启framework。

改变debug.surfaceview.log的值

adb shell setprop debug.surfaceview.log true

方式一

# 停止
adb shell stop
# 启动
adb shell start

# 进入开机logo界面

# 等开机logo过去后,看一下属性是否改变
adb shell getprop debug.surfaceview.log

方式二

# 一口气输入,跟上面一样的
adb shell stop & adb shell start

# 或者用下面那种

adb shell stop && adb shell start

参考文章

  1. Android start stop 重启framework
  2. Android start stop命令使用
  3. adb shell stop & adb shell start

相关文章

暂无评论

none
暂无评论...