我已经编写了一个服务函数,它在服务启动时执行。我的服务类如下
public class SimpleService extends Service {
public static final String TAG = "Service";
private Timer timer = new Timer();
@Override
public IBinder onBind(Intent arg0) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
Toast.makeText(this,"Service created ...", Toast.LENGTH_LONG).show();
Log.i(getClass().getSimpleName(), "Service started.");
startService() ;
}
@Override
public void onDestroy() {
super.onDestroy();
Toast.makeText(this, "Service destroyed ...", Toast.LENGTH_LONG).show();
}
private void startService() {
timer.scheduleAtFixedRate(new mainTask(), 0, 200000);
}
private class mainTask extends TimerTask {
public void run() {
for (int i = 0; i <300; i++) {
String count= String.valueOf(i);
Log.d(TAG, count);
}
}
}
protected Intent launchmain_menu() {
Intent i = new Intent(this, SimpleService.class);
return i;
}
}
我已经在我的主要活动中开始了我的服务,如下所示 startService(new Intent(this,SimpleService.class));
此外,我已点击按钮点击以销毁服务,如下所示 stopService(launchmain_menu());
protected Intent launchmain_menu() {
Intent i = new Intent(this, SimpleService.class);
return i;
}
问题是,即使我在启动服务功能
中销毁服务循环即..
for (int i = 0; i <300; i++) {
String count= String.valueOf(i);
Log.d(TAG, count);
}
得到执行。我已经检查了衔接器中正在运行的服务,但是在我点击按钮销毁服务之后,我的服务就开始了。如果服务被破坏,循环是否会被执行。
在查看此代码后,是否有人会帮助我。
答案 0 :(得分:0)
你需要自己从服务中释放所有资源,监听器等,因为android不会为你做。使用onDestroy()
方法释放所有资源。请参阅此doc。
答案 1 :(得分:0)
循环执行是因为它使用您创建的Timer在不同的线程上执行。正如我在Timer android documentation中读到的那样,Timer任务一旦启动就无法停止,所以你必须在它的预定时间之前取消它,等到任务完成,或以不同的方式完成。