我不希望我的应用程序在按下back
按钮时显示几个Activity
(比如SplashScreenActivity
)。因此,我在Manifest.xml
中对Activity
使用了noHistory=true
,如下所示:
<activity
android:name="com.gokul.SplashScreenActivity"
android:noHistory="true" >
</activity>
除了设置noHistory
,我还可以在我的SplashActivity.onPause()
方法中或任何我想要的地方调用finish()
,如下所示:
@Override
protected void onPause() {
super.onPause();
finish();
}
两者都完美地完成了这项工作。但是使用noHistory
和调用finish()
哪个更好呢
发布于 2014-01-27 15:23:44
onPause()
根本不是为您的活动放置finish()
调用的好地方。调用onPause()
的原因有很多,我怀疑你的用户会不会很高兴看到他们所做的一切都被你的应用忘记了,例如,如果他们关闭屏幕,然后又重新打开屏幕。
noHistory
应该可以很好地为您服务,但您可以在Activity
启动新的Activity
后立即调用Activity
中的finish()
,从而获得类似的行为。但是,noHistory
最终更易于维护,因为如果稍后将另一个startActivity()
调用添加到SplashActivity
中,您可能最终会忘记包含finish()
调用。
发布于 2014-01-31 16:48:57
不要使用onPause(),因为当活动在后台进行时会调用它。并且这种情况可以是任何时间,例如意向或弹出消息(自定义)。最好使用另一个选项,而不是玩弄活动的生命周期。没有历史选项,如果它对你有效,那么它是很好的。您也可以尝试以下内容:
<activity
android:name="com.gokul.SplashScreenActivity"
android:launchMode="singleTask"
android:clearTaskOnLaunch="true"/>
发布于 2019-05-14 14:51:39
当您使用noHistory时,当您请求该活动的权限时,可能会出现一些奇怪的问题。
在三星Galaxy S5(安卓6)上,当显示权限对话框时,活动将关闭
https://stackoverflow.com/questions/21374897
复制相似问题