我正在Android上实施一款应用。我刚刚添加了一个在启动完成时调用的新服务。这项服务创建了一个新的线程,它只是一个循环,一分钟就做出一些东西。为了等待下一分钟,我使用了Thread.sleep(60000),但它不起作用:等待期后没有执行其他操作。似乎该应用程序已关闭或永久等待。
还有另一种方法可以使循环服务避免Thread.sleep吗?我不认为这是代码问题,因为如果我在应用程序上调用服务的主要方法启动它(这是与服务相关的问题)
提前谢谢
我认为问题与我的LG L9 II的“扫描媒体”有关...当“扫描媒体”(我认为是关于我的SD卡)完成后,我的所有服务都被杀死了(或类似的东西) 。有什么建议吗?
答案 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(...)
方法。您可以发布每次运行时都会重新发布的任务。只需确保在应用关闭时取消它。