Android,睡一个服务

时间:2014-06-04 22:06:30

标签: android service sleep

我正在Android上实施一款应用。我刚刚添加了一个在启动完成时调用的新服务。这项服务创建了一个新的线程,它只是一个循环,一分钟就做出一些东西。为了等待下一分钟,我使用了Thread.sleep(60000),但它不起作用:等待期后没有执行其他操作。似乎该应用程序已关闭或永久等待。

还有另一种方法可以使循环服务避免Thread.sleep吗?我不认为这是代码问题,因为如果我在应用程序上调用服务的主要方法启动它(这是与服务相关的问题)

提前谢谢

我认为问题与我的LG L9 II的“扫描媒体”有关...当“扫描媒体”(我认为是关于我的SD卡)完成后,我的所有服务都被杀死了(或类似的东西) 。有什么建议吗?

3 个答案:

答案 0 :(得分:1)

考虑使用AlarmManager来调用您的服务。下面的例子说明了如何从AlarmManager每分钟建立重复事件。

   AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
   Intent intent = new Intent(getBaseContext(), AlarmReceiver.class);
   PendingIntent pending = PendingIntent.getBroadcast(getBaseContext(), 0, intent, 0);
   am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime(), ONE_MINUTE, pending);

答案 1 :(得分:0)

服务没有自己的线程,共享主(UI)线程。如果你想每分钟做一些事情,创建一个新的线程并让它每分钟做一次。

答案 2 :(得分:0)

在Android中使用Thread.sleep(...)或显式创建线程几乎没有充分的理由。如果您需要每60秒发生一次,请创建Handler并使用其postDelayed(...)方法。您可以发布每次运行时都会重新发布的任务。只需确保在应用关闭时取消它。