作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我使用此代码在 Android 4.4.2 上保持屏幕打开。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
代码确实有效,但一段时间后应用程序崩溃(可能 24 小时内发生一次)
java.lang.NullPointerException
at android.os.PowerManager.isScreenOn(PowerManager.java:739)
at android.view.ViewRootImpl.<init>(ViewRootImpl.java:454)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:250)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3028)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2395)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3930)
at android.app.ActivityThread.access$900(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1327)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:5292)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640)
at dalvik.system.NativeStart.main(Native Method)
是否有解决方案或解决方法?这与硬件/软件相关吗?
我发现的唯一有用的线程是: https://code.google.com/p/android/issues/detail?id=43008
最佳答案
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
应该在 setContentView(R.layout.activity_main);
之前调用。
正确的顺序应该是
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setContentView(R.layout.activity_main);
关于Android isScreenOn Nullpointer异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38097487/
我使用此代码在 Android 4.4.2 上保持屏幕打开。 @Override protected void onCreate(Bundle savedInstanceState) {
我正在尝试使用以下代码确定屏幕是否打开: private void isScreenOn() { if (Build.VERSION.SDK_INT >= 20) {
我是一名优秀的程序员,十分优秀!