当我使用 FLAG_ACTIVITY_SINGLE_TOP - onDestroy() 时,让我的 activity 保持活动状态
When I use FLAG_ACTIVITY_SINGLE_TOP - onDestroy() keep my activity alive
当我的服务需要与用户交互时,它会启动一个 activity:
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);
而且我还添加到我的 activity
@Override
public void onNewIntent (Intent intent) {
}
我希望我的 Ringer_intent activity 在完成后消失。我不希望用户能够将它带回 fg。
它的工作方式 w/o FLAG_ACTIVITY_SINGLE_TOP
但是 FLAG_ACTIVITY_SINGLE_TOP 我的 activity 仍然在背景中......
我添加了以下内容:
@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());
}
所以我可以看到 Android 正在调用两者
但是我的 activity 还在...
任何的想法?
谢谢
注:
我试图从 onDestroy() 调用 finish() - 没有帮助
您不能像现在这样调用 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)
当我的服务需要与用户交互时,它会启动一个 activity:
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);
而且我还添加到我的 activity
@Override
public void onNewIntent (Intent intent) {
}
我希望我的 Ringer_intent activity 在完成后消失。我不希望用户能够将它带回 fg。
它的工作方式 w/o FLAG_ACTIVITY_SINGLE_TOP
但是 FLAG_ACTIVITY_SINGLE_TOP 我的 activity 仍然在背景中......
我添加了以下内容:
@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());
}
所以我可以看到 Android 正在调用两者
但是我的 activity 还在...
任何的想法?
谢谢
注:
我试图从 onDestroy() 调用 finish() - 没有帮助
您不能像现在这样调用 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)