Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在servcie中编写的函数即使服务被破坏也会运行_Android - Fatal编程技术网

Android 在servcie中编写的函数即使服务被破坏也会运行

Android 在servcie中编写的函数即使服务被破坏也会运行,android,Android,我在服务中编写了一个函数,该函数在服务启动时执行 public class SimpleService extends Service { public static final String TAG = "Service"; private Timer timer = new Timer(); @Override public IBinder onBind(Intent arg0) { return null; }

我在服务中编写了一个函数,该函数在服务启动时执行

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;
     }

}
问题是,即使我销毁了服务,启动服务函数中的循环也会停止

执行。我已经检查了emulitor中正在运行的服务,但在我单击按钮销毁服务后,启动我的me的服务不在那里。即使服务被销毁,循环是如何执行的


在查看此代码后,是否有人可以帮助我。

您需要自己从服务中释放所有资源、侦听器等,因为android不为您提供这些服务。请使用onDestroy方法释放所有资源。请参阅此部分。

执行循环是因为它使用您创建的计时器在不同的线程上执行。正如我在文章中所读到的,计时器任务一旦启动就不能停止,因此您必须在计划时间之前取消它,等待任务完成,或者以其他方式执行

从你的代码来看,你的服务似乎没有停止。谢谢你的评论,你是对的。当我取消计时器时,它停止了。
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);
}