我目前正在处理我的第一个Android应用,但我遇到了问题。
我的应用程序应该在后台使用服务进行计数,并且我正在创建一个新线程来处理它。如果我不在服务的onDestroy()方法中停止该帖子,我的手机会给我留言#34;不幸的是,(我的应用程序)已停止。"每次我关闭应用程序。我需要以某种方式阻止它,我尝试使用:
while(!Thread.currentThread().isInterrupted()){
**my code**
}:
然后在onDestroy()方法中中断它。 它有效,但它使我的应用程序非常快,所以我想知道它是否可以以任何其他方式完成,不会改变我的代码的功能。
此外,由于我的线程在onDestroy方法中被停止,我想我的服务也会停止。即使我的应用已关闭,有没有办法让我的服务继续运行?
这是我的代码:
public class CounterService extends Service {
private Handler handler;
private int time = -1;
private boolean isActive;
private Intent timeBroadcaster;
private Runnable counter;
private Thread serviceCounter;
@Override
public void onCreate(){
super.onCreate();
handler = new Handler();
timeBroadcaster = new Intent();
timeBroadcaster.setAction("EXAMPLE_BROADCAST");
counter = new Runnable() {
@Override
public void run() {
isActive = ((PowerManager) getSystemService(Context.POWER_SERVICE)).isInteractive();
if (isActive) {
handler.postDelayed(this, 1000);
time += 1;
} else {
if (time > 5) {
//log
}
time = 0;
handler.postDelayed(this, 1000);
}
timeBroadcaster.putExtra("counter", time);
sendBroadcast(timeBroadcaster);
}
};
serviceCounter = new Thread(counter);
serviceCounter.start();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy(){
//serviceCounter.interrupt();
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
答案 0 :(得分:0)
即使我的应用已关闭,有没有办法让我的服务继续运行?
你可以使用在后台运行的同步适配器甚至应用程序停止运行。 https://developer.android.com/training/sync-adapters/creating-sync-adapter.html