Gok*_* KP 22 android activity-stack back-stack
我不希望我的应用程序在按下按钮时显示很少Activity(说SplashScreenActivity)back.所以我noHistory=true在我的Manifest.xml用途中使用Activity如下所示:
<activity
android:name="com.gokul.SplashScreenActivity"
android:noHistory="true" >
</activity>
Run Code Online (Sandbox Code Playgroud)
noHistory我也可以finish()用我的SplashActivity.onPause()方法或任何我想要的方式调用,而不是设置,如下所示:
@Override
protected void onPause() {
super.onPause();
finish();
}
Run Code Online (Sandbox Code Playgroud)
两者都能完美地完成工作.但哪一个更好用,使用noHistory或打电话finish()?
Nas*_*eek 27
onPause()根本不是finish()打电话给你的活动的好地方.onPause()因为各种原因可以调用,我怀疑你的用户会很高兴看到他们正在做的事情只是被他们的应用程序遗忘了,例如,如果他们关闭并重新打开屏幕.
noHistory应该为你服务很好,但你可以通过finish()在Activity发布一个新的后立即打电话给你一个类似的行为Activity.但是,noHistory最终可维护性更强,因为finish()如果您startActivity()向SplashActivity后者添加另一个呼叫,您最终可能会忘记包含该呼叫.
如果你想打电话finish(),你应该在startActivity通话后这样做,如果你在任何生命周期回调中都这样做,正如NasaGeek所说,它可以在不同的时刻被调用,而不仅仅是在导航到其他活动时.
好处noHistory是,系统负责在正确的时刻完成活动(正如你在这里看到的,系统实际上会为你调用finish()方法)所以你可以确定你没有调用它在一个糟糕的时刻,一切都是安全的(可能现在这似乎并不重要,但它可能是,例如在使用线程时)
此外,它的好处是,活动不仅在您启动另一个活动时完成,而且在任何其他情况下,当用户离开它并且活动在屏幕上不再可见时,例如当用户按下时后退按钮(如您所愿)或其他活动到达前台时.
| 归档时间: |
|
| 查看次数: |
9734 次 |
| 最近记录: |