我在应用程序的主屏幕中有一个START和STOP按钮。当我点击START时,会有一些GUI和线程被实例化。当我点击停止时,我想要停止一切,活动应该回到原点状态。对于与启动时完全相同的状态(当我们在移动设备上点击App图标时)。 是否有可能做到这一点?我尝试了完成(),这杀死了应用程序并退出。我不想退出主屏幕。相反,点击停止我希望应用程序回到原点或出生状态。谢谢。
答案 0 :(得分:1)
你是如何运行线程的?它们是AsillaTask的vanilla线程还是子类?
如果这些是AsyncTask
对象的实例,您可以使用cancel()
方法取消它,然后在doInBackground()
方法中,您可以检查isCancelled()
方法看看它是否确实被取消了,然后优雅地退出。
下面的伪代码:
private YourTask taskRef;
public void btnStartHandler() {
taskRef = new YourTask();
taskRef.execute();
}
public void btnStopHandler() {
taskRef.cancel();
}
然后,在你的AsyncTask中:
public Void doInBackground(Void... arg0) {
// Background loop start
if (this.isCancelled()) {
return;
}
// Background loop continue...
}
如果您正在使用线程,则可以中断它们并捕获异常并在那里处理它。此外,您可以创建一个从名为onCreate()
的{{1}}调用的方法或初始化所有内容的方法。您还可以使用STOP按钮单击处理程序中的initApp()
将值重置为启动默认值。
答案 1 :(得分:0)
您可以使用finish()
重新启动活动,然后拨打startActivity(getIntent());
。这将有效地重新启动您的活动,并将其置于默认状态,无论它是如何启动的。
在此之前,请确保取消TJF建议的所有线程或AsyncTasks(您可以并且应该在onDestroy
重载中执行此操作)。
有关重新启动活动的详情以及有关利弊的讨论,请参阅此问题:Reload activity in Android