Android 从服务启动活动B,始终首先调用主活动A
我有一个叫做MainActivity的启动器活动 MainActivity将启动KeyGuardService,KeyGuardService注册ScreenOFF接收器,然后在onReceive中启动LockScreenActivity使用startActivity 但每次,主活动都会在锁定屏幕活动之前显示。根据其他问题,我尝试了许多解决方案 Menifest如下所示:Android 从服务启动活动B,始终首先调用主活动A,android,android-service,Android,Android Service,我有一个叫做MainActivity的启动器活动 MainActivity将启动KeyGuardService,KeyGuardService注册ScreenOFF接收器,然后在onReceive中启动LockScreenActivity使用startActivity 但每次,主活动都会在锁定屏幕活动之前显示。根据其他问题,我尝试了许多解决方案 Menifest如下所示: <activity android:name=".activities.MainActi
<activity
android:name=".activities.MainActivity"
android:label="@string/app_name"
android:launchMode="singleTask"
android:taskAffinity="com.example.mylockscreen.main"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service
android:name=".services.KeyGuardService"
android:label="@string/app_name"/>
<activity
android:name=".activities.LockScreenActivity"
android:label="@string/app_name"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:taskAffinity="com.example.mylockscreen.lock"
android:theme="@android:style/Theme.Translucent"/>
有人能告诉我原因吗,谢谢。你是说每次打开屏幕时,MainActivity在LockScreenActivity之前启动?是的,我可以看到屏幕闪烁我使用日志跟踪,发现MainActivity的onResume被称为onReceive()广播接收器的功能及其内容。只是好奇为什么要包括
意图。标记活动\u多个任务
?在文档中指出,除非您正在实现自己的顶级应用程序启动器,否则不要使用此标志。和默认系统不包括图形化任务管理,除非您为用户提供返回您已启动的任务的方法,否则不应使用此标志。
BroadcastReceiver mMasterResetReciever = new BroadcastReceiver()
{
public void onReceive(Context context, Intent intent)
{
String action = intent.getAction();
Log.d(TAG, Constants.TAG + "service receive " + action);
if ((action.equals("android.intent.action.SCREEN_OFF"))
&& (Preferences.getUserPrefBoolean(context, "app_on", true)))
{
Intent localIntent = new Intent(context, LockScreenActivity.class);
localIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
localIntent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
localIntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
KeyGuardService.this.startActivity(localIntent);
Log.d(TAG, Constants.TAG + "service start activity");
}
}
};