在Android中停止正在运行的线程?

时间:2014-06-17 11:46:29

标签: java android multithreading

我正在使用该线程登录服务器,我想停止线程作为用户按下后退按钮,我使用stop()和destroy()方法,这些方法使我的应用程序崩溃,我认为这些方法是折旧的这就是我面临这个问题的原因。请给我一个停止线程的方法,而不使用stop()和destroy()。

3 个答案:

答案 0 :(得分:1)

自从java 1.1(〜17年前......)以来,

Thread.stop()已被弃用。这种方法的Java详细解释了原因。这意味着您永远不应该调用此方法。它仍然存在与我年轻时编写的代码的向后兼容性。

但是,如果你想要取消"该怎么办?在线程中完成的操作?答案是你(开发人员)应该自己关心这个问题。怎么样?这取决于您的应用程序。例如,如果您的线程打开i / o流,您可以关闭流。如果你的线程在循环中执行一系列操作,你应该检查特殊标志,指示线程应该退出并根据你的应用程序的需要更新这个标志(在你的情况下当用户按下"返回"按钮。

如果您仍有问题,请尝试详细说明您的主题是什么,您可能会得到具体的建议如何阻止它。

答案 1 :(得分:0)

对于android中的后台线程尝试使用服务。 我的意思是你启动一个服务并在该服务中添加一个线程。 如果你想停止该服务,那么按下后退按钮试试" Bound"服务。你会在这里得到基本的想法。

http://developer.android.com/guide/components/services.html

答案 2 :(得分:0)

如果您想长时间反复工作,请仅使用线程。我从来没有需要开始一个线程。

您应该使用AsyncTask

  

AsyncTask可以正确,轻松地使用UI线程。该类允许执行后台操作并在UI线程上发布结果,而无需操纵线程和/或处理程序。

它通过使用ThreadPool中的Thread来工作。 AsyncTask很容易停止,有一个方法可以覆盖后台任务,一个覆盖后期任务工作,适合更新UI(只要任务是由UI线程启动的)。