屏幕解锁时的活动处理方式

6
所以,我有一个onResume命令,可以重新启动停止的线程,运行我的游戏循环。这在通过Home键关闭或聚焦到另一个应用程序后恢复应用程序时完美运作。然而,当您再次打开屏幕时,活动的onResume命令会立即触发,而屏幕尚未解锁。我需要我的活动在屏幕解锁时知道它,以便在适当的时间重新启动线程。有没有人遇到过这种情况?
1个回答

15

为了检测屏幕开关事件,注册一个广播接收器:

在AndroidManifest.xml中:

    <receiver android:name="receiverScreen">
        <intent-filter> 
            <action android:name="android.intent.action.SCREEN_ON" />
            <action android:name="android.intent.action.SCREEN_OFF" />
<action android:name="android.Intent.ACTION_USER_PRESENT" />
        </intent-filter> 
    </receiver>

在 Activity 或 Service 中:

    try {
              IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);

              filter.addAction(Intent.ACTION_SCREEN_OFF);
filter.addAction(Intent.ACTION_USER_PRESENT);

              BroadcastReceiver mReceiver = new receiverScreen();

              registerReceiver(mReceiver, filter);
         } catch (Exception e) {

         }

接收代码,当系统告诉您屏幕开/关时:

 public class receiverScreen extends BroadcastReceiver {

     @Override
     public void onReceive(Context context, Intent intent) {

         if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)){

         }
        if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)){

         }
if (intent.getAction().equals(Intent.ACTION_USER_PRESENT)){

         }
     }

    }

似乎没有包含 AndroidManifest.xml 的代码。 - louielouie
非常有帮助,但是ACTION_SCREEN_OFF只有在屏幕被打开并且解锁屏幕出现时才会执行,我需要在解锁屏幕解锁并消失时执行。 - tantonj
@tantonj 然后注册更多的 BroadcastReceiver 接收器 Intent.ACTION_USER_PRESENT - ρяσѕρєя K
@tantonj 只有这三个 Intent.ACTION_USER_PRESENT, ACTION_SCREEN_OFFACTION_SCREEN_ON 接收器可用于通知系统屏幕开/关状态。 - ρяσѕρєя K
太好了!这正是我需要的 Intent.ACTION_USER_PRESENT,谢谢。 - tantonj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接