[英]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.