问题
I have found two ways on keeping the screen on:
First one is simpler:
getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Second one is using a wakelock and requiring an extra permission:
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "DoNotDimScreen");
Is there any real difference between this two methods apart from the second one being more complicated to implement and requiring an extra permission? Will the end result be always the same?
回答1:
You should see Coding for (Battery) Life Google IO presentation, slide 16
If you don't want to, then: You could do the first one in the XML for any layout element and it is the suggested one to use (don't know about applying it to the window though, might be as bad as the wakelock, dunno).
XML:
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:keepScreenOn="true">
Window Flag:
getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
来源:https://stackoverflow.com/questions/2771811/keeping-screen-on-which-way