2010-08-12 35 views
0

我有一个开始,并在应用程序的主屏幕STOP按钮。有一些GUI和线程在我点击START时被实例化。当我点击停止时,我希望一切都停止,并且活动应该回到其原始状态。对于像启动时一样的状态(当我们点击移动设备上的App图标时)。 可以做到这一点吗?我尝试完成(),这杀了应用程序并退出。我不想退出主屏幕。相反,点击“停止”后,我希望应用程序返回到原始状态或出生状态。谢谢。停止或刷新一个应用程序的活动

回答

1

你是如何运行的线程?他们是香草线程还是AsyncTask的子类?

如果这是一个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()调用initApp()或初始化所有内容。您也可以使用STOP按钮单击处理程序中的initApp()将值重置为启动默认值。

+0

这不是我一直在寻找,没有这样的initapp()两种。 – 2010-08-12 20:29:48

+0

如果您注意,我建议您_create_该方法,并从您的'onCreate()'调用它。更多关于你在做什么的信息肯定会有助于获得你正在寻找的答案。 – TJF 2010-08-12 20:31:31

+0

+1为了补偿谁低估了这个内容丰富的答复。 – hpique 2010-08-12 20:32:21

0

您可以finish()重启活动,然后调用startActivity(getIntent());。这将有效地重新启动您的活动并将其置于其默认状态,无论它是如何启动的。

这样做,一定要取消所有线程或AsyncTasks作为TJF建议之前(你可以和应该做的onDestroy过载)。

有关重新启动活动的详细信息,以及有关利弊的讨论,看到了这个问题:Reload activity in Android

相关问题