2012-03-23 51 views
1

我有这个线程,其作为服务运行:android是我的应用程序还在运行?

public void run() { 
     try { 
      while(true) { 
       Thread.sleep(timeInterval); 
       results = sendGetMessage(); 
       b.putString("results", results); 
       receiver.send(2, b); 
      } 
     } catch (InterruptedException e) { 
      results = e.toString(); 
     } 
    this.stop(); 
    } 

我想编写一个简单的函数,它会检查,如果我的应用程序仍在运行(以取代永恒的,而(TURE)我已经写)。 类似于:while(isMyAppRunning)。 我现在的问题是,即使我关闭应用程序,该服务继续运行.. 有人可以请友好,给我一个代码示例?

+0

PS你不应该叫'stop()' – 2012-03-23 09:53:24

+0

为什么不呢?我应该如何停止服务? – 2012-03-23 10:18:37

+0

这是'Thread.stop()',对不对?只是删除它。当run()结束时,线程停止。 'stop()'强制停止自Java 1.1以来已被弃用的线程。 – 2012-03-23 14:59:43

回答

0

反过来做。在Thread子类中创建布尔标志running。将其作为true启动,并使用shutdown()方法将其设置为false。从ActivityonPause()方法中调用此方法。

0

当您不再需要服务时,您可以使用context.stopService(Intent service);停止服务。您可以在服务onDestroy()方法中执行所有维护以停止线程等。

你也可以有一些boolean,当应用程序存在时你可能会设置为false,尽管我自己更喜欢第一个解决方案。

+0

只要应用程序正在运行,就需要我的服务。 正如你所说我想做一个布尔值,将标志如果应用程序存在或不,我只是不知道该怎么做.. :) – 2012-03-23 09:55:53

+0

你可以有一个静态布尔值(例如在一个类,扩展应用程序)并将其设置为false。 – Joru 2012-03-23 09:58:04

+0

如果我有一个扩展Application类的类,它会是第一次加载,只要我运行该应用程序? – 2012-03-23 10:23:19

相关问题