2016-06-29 24 views
5

이 코드를 사용하여 Android 4.4.2에서 화면을 계속 표시합니다.Android isScreenOn Nullpointerexception

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState);  
     getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
    } 

코드는 작업을 수행하지만, 시간이 응용 프로그램의 충돌 (24 시간 어쩌면 1 회) 후

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) 

이에 대한 해결책이나 workarround이 있습니까? 이 하드웨어/소프트웨어와 관련이 있습니까? 내가 발견

유일한 유용한 스레드이었다 https://code.google.com/p/android/issues/detail?id=43008

답변

0

이 방법을 시도

자바

public class MainActivity extends Activity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
**setContentView(R.layout.activity_main);** 
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
} 

XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:keepScreenOn="true"> 
... 
</RelativeLayout> 

더 많은 정보는 : Keep the Screen On

2

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);

+0

제가 차례로 호출 할 수 있어야 – Fabian