【发布时间】:2013-08-08 19:52:39
【问题描述】:
我有一个应用程序,它允许用户从列表中选择一个 txt 文件,然后上网以获取该文件的内容。除非用户意外或故意按下硬件返回按钮以再次查看列表,否则一切正常。
现在,当用户单击列表中的新项目(即新文件)时,应用程序不会加载新文件,而是从暂停的位置继续运行。我不希望这种情况发生。我知道这与活动的生命周期有关。
如何确保它加载新文件而不是从中断处继续?
【问题讨论】:
标签: android
我有一个应用程序,它允许用户从列表中选择一个 txt 文件,然后上网以获取该文件的内容。除非用户意外或故意按下硬件返回按钮以再次查看列表,否则一切正常。
现在,当用户单击列表中的新项目(即新文件)时,应用程序不会加载新文件,而是从暂停的位置继续运行。我不希望这种情况发生。我知道这与活动的生命周期有关。
如何确保它加载新文件而不是从中断处继续?
【问题讨论】:
标签: android
另一种杀死活动的方法是调用以下方法。
@Override
public void onBackPressed() {
super.onBackPressed();
finish();
}
【讨论】:
要销毁后按时的活动,请使用此代码。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
//Destroys activity.
finish();
}
【讨论】:
this.finish() 与 finish() 完全相同。我的意思是finish() 不会破坏活动。阅读文档。
你只需要在 onBackPressed() 方法中调用 activity.finish() 来完成你的活动;
【讨论】:
Activity#finish() 不保证您的活动已关闭。阅读文档。
我想您正在加载onCreate() 中的文件。您应该改为在 onResume() 中执行此操作。
不要强制关闭活动(例如使用finish())。首先,this does not guarantee the Activity will be closed,其次,这最好留给 Android 来决定。
【讨论】:
AsyncTask 加载第一个文件。然后,为第二个文件生成一个新文件。所以,我猜这需要在onPause 中完成,然后在onStart 中开始一个新的AsyncTask。这样我的代码就不会受到干扰。 :)
AsyncTask获取旧文本文件并取消它。
AsyncTask取决于逻辑。也许导航回此Activity 的用户不想要新文件,只需查看以前的文件即可。您需要研究涉及的案例。
AsyncTask 是否正在运行?除了手动执行之外,就是!! :)
您可以覆盖活动中的onBackPressed 方法并调用finish() 以获得所需的结果。
【讨论】: