停止或刷新应用的活动

时间:2010-08-12 19:26:03

标签: android android-emulator

我在应用程序的主屏幕中有一个START和STOP按钮。当我点击START时,会有一些GUI和线程被实例化。当我点击停止时,我想要停止一切,活动应该回到原点状态。对于与启动时完全相同的状态(当我们在移动设备上点击App图标时)。 是否有可能做到这一点?我尝试了完成(),这杀死了应用程序并退出。我不想退出主屏幕。相反,点击停止我希望应用程序回到原点或出生状态。谢谢。

2 个答案:

答案 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