在我的 android 应用程序中,我正在使用广播接收器开始活动。如果我的设备在此活动期间锁定并且如果我将其解锁然后活动重新启动意味着它再次运行创建请帮我解决这个问题
提前致谢
在我的 android 应用程序中,我正在使用广播接收器开始活动。如果我的设备在此活动期间锁定并且如果我将其解锁然后活动重新启动意味着它再次运行创建请帮我解决这个问题
提前致谢
您在 AndroidManifest.xml 中的活动声明是什么?我认为你应该像这样将launchMode指定为“singleTask”:
<activity android:name=".Youracticity" android:launchMode="singleTask" android:configChanges="orientation|keyboardHidden" android:screenOrientation="portrait">
</activity>
^-^
在您的清单中,您是否有这样的内容:
<action android:name="android.intent.action.USER_PRESENT" />
<receiver android:name="com.activities.app" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
如果是,请妥善处理。
用于检测屏幕开启和屏幕关闭注册广播接收器,如:
<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>
在活动或服务中:
try {
IntentFilter if= new IntentFilter(Intent.ACTION_SCREEN_ON);
if.addAction(Intent.ACTION_SCREEN_OFF);
if.addAction(Intent.ACTION_USER_PRESENT);
BroadcastReceiver mReceiver = new receiverScreen();
registerReceiver(mReceiver, if);
} 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)){
}
}
}