我有一个应用程序,其活动可以从头开始 菜单和由广播接收器启动的活动。
现在在启动时,如果调用接收器,则“事件查看器”活动是 开始...退出此活动后,用户返回上一个 屏幕(可能是主屏幕或用户正在做的任何事情)..这就是它 应该是。
但是,如果我从主启动器启动“主要”活动,然后按 主页按钮返回主屏幕..问题开始了。 现在,如果调用接收器,则显示“事件查看器”活动。 如果用户退出“事件查看器”活动(或我调用finish()),它将显示“主”活动(仍然在后台运行),而不是用户正在做的上一件事(如主屏幕)。 / p>
这不是我想要的方式。因为它在解雇后导致用户 日历事件(我的应用程序的目的)返回到例如设置 来自主应用..
如果我在暂停时调用finish(),它可以正常工作......但这不是那种方式 它应该工作。
任何线索?
希望问题很清楚,因为英语不是我的第一语言 发现很难解释这个问题: - )
谢谢..
答案 0 :(得分:3)
在您的接收器中,使用标记FLAG_ACTIVITY_NEW_TASK
@Override
public void onReceive(Context context, Intent intent) {
//... bla bla bla
Intent in = new Intent(context, IndependentActivity.class);
in.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(in);
//... bla bla bla
}
在您的清单中,为您的IndependentActivity提供taskAffinity。
<activity
android:name=".IndependentActivity"
android:excludeFromRecents="true"
android:taskAffinity="com.example.independantactivty.ind" >
</activity>
我已将它排除在最近,但这完全是可选的。
答案 1 :(得分:0)
除非用户选择运行应用程序(小部件按下,通知选择,启动器等),否则我认为启动活动通常是不明智的。您的示例只是在用户不期望它可能导致问题时突然更改活动的一个原因。
如果用户没有使用该应用程序,最好的方式是通过状态栏通知系统。
答案 2 :(得分:0)
把
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1000) {
if (resultCode == 1) {
Main.this.finish();
}
}}
在您的主要活动和您的其他活动中,放置this.setResult(1);在调用yourOtherActivity.this.finish()
之前我认为就是这样。你的第一语言是什么?