<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.jatin.notification">
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity"
android:launchMode="singleInstance" > <!-- Activity A -->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".NotificationActivity"
>
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity" />
</activity>
<activity
android:name=".DialogActivity"
android:excludeFromRecents="true"
android:noHistory="true"
android:theme="@style/Theme.AppCompat.Dialog.MinWidth" />
<activity
android:name=".SecondActivity" /><!-- Activity B -->
</application>
</manifest>
根据单个实例,该系统不会在拥有实例的任务中启动任何其他活动。该活动始终是其任务的单身和唯一成员。该活动在单独任务中开放的任何活动。
但是,当我从活动A(启动器活动)导航时 ->活动B通过起动性(意图*)而不是在新任务活动中be of活动A的任务。虽然当我通过启动性(意图*)导航到B中时,它显示了A。
的单个实例*没有添加标志。
为什么活动B在活动a之上推开(活动具有启动模式:" SingleSinstance"),而不是创建新任务?
活动列表:
taskRecord {14ba4a25#18 a = com.example.nischay.notification u = 0 sz = 2} 运行#1:ActivityRecord {2A37B313 U0 com.example.nischay.nischay.notification/.secondactivity t18} 运行#0:ActivityRecord {1ab16fa7 U0 com.example.nischay.nischay.notification/.mainactivity t18}
mResumedActivity: ActivityRecord{2a37b313 u0 com.example.nischay.notification/.SecondActivity t18}
mLastPausedActivity: ActivityRecord{1ab16fa7 u0 com.example.nischay.notification/.MainActivity t18}
详细信息:
设备:联想K50A40 Android版本:5.0compilesdkversion:25
代码
Intent intent = new Intent(MainActivity.this, SecondActivity.class); startActivityForResult(intent, REQUEST_CODE_NOTIFY);
宾果游戏!最后是这种奇怪行为的解释!
您说您从MainActivity
启动SecondActivity
:
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivityForResult(intent, REQUEST_CODE_NOTIFY);
使用startActivityForResult()
时,启动的Activity
必须在与期望结果的Activity
相同的任务中运行(即:启动Activity
)。因此,Android忽略了MainActivity
的launchMode
并在同一任务中启动SecondActivity
。
您创造了未记录的冲突。为了解决您的问题,您需要决定想要什么。您不能具有调用startActivityForResult()
的singleInstance
Activity
。选择其他机制在SecondActivity
和MainActivity
之间进行通信,或删除MainActivity
的特殊启动模式。
为什么无论如何您要MainActivity
是singleInstance
?有这样的原因吗?