【发布时间】:2018-03-29 14:10:56
【问题描述】:
我有一个 android 演示,只有一个活动。在 (onCreate|onStart|onResume) 中进行活动调用完成(),然后单击最近按钮,但我的活动未显示在最近的任务中。但是当我使用这样的代码时,它会显示在最近的任务中。似乎在经历了所有生命周期之后,它会显示在最近的任务中?谁能告诉我这是怎么回事,谢谢。
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getMainLooper().getQueue().addIdleHandler(new MessageQueue.IdleHandler() {
@Override
public boolean queueIdle() {
finish();
return false;
}
});
}
我不在清单中使用 android:excludeFromRecents="true",就像这样:
<activity android:name=".XXXActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
【问题讨论】:
-
它与您提供的问题链接不重复。问题清楚地表明,应用程序在最近的任务列表中显示了上面的代码,但没有显示为正常的
finish()。这意味着android:excludeFromRecents="true"与它无关。 -
@sunpointed 在 Activity 完成其生命周期后单击按钮调用
finish()会发生什么? -
我猜这可能是因为
finish()在系统完成处理应用程序启动之前过早地向活动消息队列发布了 exit 请求,因此没有机会获得应用程序的屏幕截图 -
我认为在单击按钮上调用finish()与使用IdleHandler一样,它会出现在最近的任务中
标签: android