单个实例:启动器活动的启动模式


<?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忽略了MainActivitylaunchMode并在同一任务中启动SecondActivity

您创造了未记录的冲突。为了解决您的问题,您需要决定想要什么。您不能具有调用startActivityForResult()singleInstance Activity。选择其他机制在SecondActivityMainActivity之间进行通信,或删除MainActivity的特殊启动模式。

为什么无论如何您要MainActivitysingleInstance?有这样的原因吗?

相关内容

  • 没有找到相关文章

最新更新