首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >noHistory和finish() -哪个更好?

noHistory和finish() -哪个更好?
EN

Stack Overflow用户
提问于 2014-01-27 15:10:34
回答 3查看 12.5K关注 0票数 23

我不希望我的应用程序在按下back按钮时显示几个Activity (比如SplashScreenActivity)。因此,我在Manifest.xml中对Activity使用了noHistory=true,如下所示:

代码语言:javascript
复制
<activity
    android:name="com.gokul.SplashScreenActivity"
    android:noHistory="true" >
</activity>

除了设置noHistory,我还可以在我的SplashActivity.onPause()方法中或任何我想要的地方调用finish(),如下所示:

代码语言:javascript
复制
@Override
protected void onPause() {
    super.onPause();
    finish();
}

两者都完美地完成了这项工作。但是使用noHistory和调用finish()哪个更好呢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-27 15:23:44

onPause()根本不是为您的活动放置finish()调用的好地方。调用onPause()的原因有很多,我怀疑你的用户会不会很高兴看到他们所做的一切都被你的应用忘记了,例如,如果他们关闭屏幕,然后又重新打开屏幕。

noHistory应该可以很好地为您服务,但您可以在Activity启动新的Activity后立即调用Activity中的finish(),从而获得类似的行为。但是,noHistory最终更易于维护,因为如果稍后将另一个startActivity()调用添加到SplashActivity中,您可能最终会忘记包含finish()调用。

票数 27
EN

Stack Overflow用户

发布于 2014-01-31 16:48:57

不要使用onPause(),因为当活动在后台进行时会调用它。并且这种情况可以是任何时间,例如意向或弹出消息(自定义)。最好使用另一个选项,而不是玩弄活动的生命周期。没有历史选项,如果它对你有效,那么它是很好的。您也可以尝试以下内容:

代码语言:javascript
复制
<activity
    android:name="com.gokul.SplashScreenActivity"
    android:launchMode="singleTask"
    android:clearTaskOnLaunch="true"/>
票数 0
EN

Stack Overflow用户

发布于 2019-05-14 14:51:39

当您使用noHistory时,当您请求该活动的权限时,可能会出现一些奇怪的问题。

在三星Galaxy S5(安卓6)上,当显示权限对话框时,活动将关闭

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21374897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档