当我的服务需要与用户交互时,它会启动一项活动:
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。
它的工作方式没有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());
}
所以我可以看到Androids正在呼唤两者
但我的活动仍在那里......
任何的想法?
谢谢
注意:
我试图从onDestroy()调用finish() - 没有帮助
答案 0 :(得分:0)
您不能按照您的方式致电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)