我正在开发Android应用程序一段时间,并且关注了很多关于活动生命周期和应用程序生命周期的帖子.
我知道Activity.finish()方法调用的方法Activity.onDestroy(),并从堆栈中删除活动,我想它以某种方式指向操作系统和垃圾收集器,他可以"做他的把戏"并释放内存,当它发现它是一个很好的时间做所以....
我来到这篇文章 - 退出申请不赞成?并阅读Mark Murphy的回答.
这让我对这个finish()方法究竟是做什么感到困惑.
我有机会打电话finish(),onDestroy()不会打电话吗?
我有一个Android应用程序.我正在制作带有进度条的加载屏幕.
我在onCreate方法中输入了一个延迟.当计时器结束时,我想完成当前活动并开始一个新活动.
它只是在调用finish()方法时给我一个例外.
public class LoadingScreen extends Activity{
private LoadingScreen loadingScreen;
Intent i = new Intent(this, HomeScreen.class);
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.loading);
CountDownTimer timer = new CountDownTimer(10000, 1000) //10 second Timer
{
public void onTick(long l)
{
}
@Override
public void onFinish()
{
loadingScreen.finishActivity(0);
startActivity(i);
};
}.start();
}
}
Run Code Online (Sandbox Code Playgroud)
如何在进度条完成后更改代码以使其结束?
我有一个片段F.在从服务获得结果后,F需要完成它所在的活动并在Web浏览器中启动一个页面,我使用intent.
如果用户按下后退按钮,它似乎工作正常.但是,如果他从最近的应用程序启动应用程序,则活动尚未完成.我已经考虑过这样做了.就像完成当前活动并从父活动打开页面一样.但我必须在流程中做出很多改变.这将是我的最后选择.即使我从最近的应用程序启动它,有没有办法确保活动完成?
Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(url));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
getActivity().finish();
Run Code Online (Sandbox Code Playgroud)
编辑:添加代码.
我设计了一个带闪屏的应用程序,睡眠时间为3秒,并显示我的应用程序的主屏幕.我可以无缝导航到我的应用程序,在我回到主屏幕后,当按下后退按钮时,控件再次返回到启动画面,而不是终止应用程序.请给我一个解决方案.:)