繁体   English   中英

Android launchMode:singleTask覆盖

[英]Android launchMode:singleTask override

我有两个活动Main和SearchEvent活动。 Main活动具有启动模式:“ singleTask”,并且没有与SearchEvent活动关联的任何特殊参数。

当我单击Main活动中存在的按钮时,SearchActivity活动从前台开始并显示事件列表。 当我单击列表项之一时,这些项应获取eventId并启动Main.class活动,但是由于Main.class已经存在于堆栈中,因此它放在顶部,但杀死了SearchActivity(我看到了onDestroy方法被调用)。

我不希望SearchEvent的onDestroy方法被调用,而只是SearchEvent活动在后台运行并且Main活动弹出。

另外,如果我尝试使用launchMode =“ singleTop”,它将启动我没有寻找的Main活动的另一个实例。

我可以启用什么设置来启动Main的相同实例并在后台移动SearchEvent?

清单文件中的代码。

主要活动

<activity
        android:configChanges="orientation"
        android:launchMode="singleTask"
        android:name=".Main"
        android:screenOrientation="portrait"
        android:theme="@style/Theme.CustomDialog" >
        <intent-filter >
            <action android:name="android.intent.action.VIEW" />
        </intent-filter>
        <intent-filter >
            <action android:name="android.intent.action.SEND" >
            </action>

            <category android:name="android.intent.category.DEFAULT" >
            </category>

            <data android:mimeType="image/*" >
            </data>
        </intent-filter>
        <intent-filter >
            <action android:name="android.intent.action.SEND" >
            </action>

            <category android:name="android.intent.category.DEFAULT" >
            </category>

            <data android:mimeType="video/*" >
            </data>
        </intent-filter>
    </activity>
    <activity>

SearchEvent代码

<activity
            android:configChanges="orientation"
            android:label="@string/app_name"
            android:name="SearchEvent"
            android:screenOrientation="portrait"
            android:theme="@style/Theme.CustomDialog1" >
            <intent-filter >
                <action android:name="android.intent.action.VIEW" />
            </intent-filter>
        </activity>

该代码用于首次调用Main Activity。

Intent mainIntent = new Intent(SignIn.this, Main.class);
startActivity(mainIntent);

从主活动调用SearchEvent的代码

Intent searchActivity = new Intent(Main.this, SearchEvents.class);
startActivity(searchActivity);

代码以再次调用SearchEvents活动中的Main活动

Intent mainIntent = new Intent(SearchEvents.this, Main.class);
startActivity(mainIntent);

如果搜索活动应该向用户显示事件列表,并让用户选择一个事件,然后使用该结果调用主活动,则您可能希望以其他方式进行操作。

如果我正确理解这一点,则可能希望主活动使用startActivityForResult()启动搜索活动,并让搜索活动在完成setResult()使用setResult()将选定事件返回到主活动。 通过这种方式,搜索活动不必再次启动主活动,而只是“回到它”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM