当我使用FLAG_ACTIVITY_SINGLE_TOP - 的onDestroy()把我的活动活着
问题描述:
当我的服务需要与用户交互启动的活动:当我使用FLAG_ACTIVITY_SINGLE_TOP - 的onDestroy()把我的活动活着
Intent i = new Intent(context, Ringer_intent.class);
i.putExtra("PHONE_NUMBER", phone_number);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.setFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
// TODO: This prevents onDestroy --> why???
i.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
context.startActivity(i);
为了确保Ringer_intent不会运行两次,我加
i.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
而且我也加入到我的活动
@Override
public void onNewIntent (Intent intent) {
}
我想我Ringer_intent交流当它结束时它就会消失。我不希望用户能够将它带回fg。
这种方式它的工作W/O FLAG_ACTIVITY_SINGLE_TOP
但随着FLAG_ACTIVITY_SINGLE_TOP我的活动仍然在BG ...
我增加了以下内容:
@Override
public void onStop() { Log.i(LOG_TAG, "Ringer_intent.onStop()"); // For Debugging
super.onStop();
}
@Override
public void onDestroy() { Log.i(LOG_TAG, "Ringer_intent.onDestroy()"); // For Debugging
super.onDestroy();
Log.e(LOG_TAG, "Still not dead - kill it!");
// Bad idea - it kills my service as well !!!
// android.os.Process.killProcess(android.os.Process.myPid());
}
所以我可以看到,机器人会被调用都
但我的活动仍然存在...
任何想法?
感谢
注:
席力图召从完成的onDestroy()() - 没有帮助
答
你不能叫Intent.setFlags()
你正在做的方式。当您致电setFlags()
时,它将用您传递给setFlags()
的参数覆盖标志。这意味着在拨打setFlags()
三次之后,唯一将被设置的标志将是您在上次拨打setFlags()
时指定的标志。您可以使用addFlags()
代替setFlags()
,也可以调用一次setFlags()
并通过所有的标志作为参数,就像这样:setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS | Intent.FLAG_ACTIVITY_SINGLE_TOP)
你提的问题是非常困难的理解:-(请发表您的清单,并试图解释什么 –
另外,你不能调用'Intent.setFlags()'当你调用'setFlags()'时,它会用参数覆盖标志你传给'setFlags()',这意味着在调用'setFlags()'3次之后,唯一将被设置的标志将是你在上一次调用'setFlags()'时指定的那个标志,你可以使用' addFlags()'而不是'setFlags()',或者你可以调用'setFlags()'一次并传递所有的标志作为参数,如下所示:'setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIV ITY_EXCLUDE_FROM_RECENTS | Intent.FLAG_ACTIVITY_SINGLE_TOP)' –
谢谢!这是什么错误:-)正如大卫解释说的 - 我最后一次调用Intent.setFlags()取消了FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS,这就是为什么我的活动用户界面仍然可供用户在bg中使用。 FLAG_ACTIVITY_SINGLE_TOP没有任何待办事项:-)再次感谢。 – Ori