[英]service is running after calling stopService
我正在學習如何處理服務。.i創建了一個小示例。 mainActivity將一個整數發送給服務,並且該服務使用該整數作為循環中的最大迭代,如下面的代碼所示。
問題是當我調用stopService(intent)時,我仍然從下面發布的服務類中的循環中接收值。.我認為當我調用stopService()時,該服務將被破壞
為什么那是哈彭?
服務內容 :
public class MyService extends Service {
private final String TAG = this.getClass().getSimpleName();
final static String MY_ACTION = "MY_ACTION";
@Override
public void onCreate() {
Log.w(TAG, "onCreate");
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.w(TAG, "onStartCommand");
int max = intent.getIntExtra("MAX", -1);
Log.v(TAG, "Act->Service : " + max);
MyThread myThread = new MyThread();
myThread.start();
return Service.START_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
Log.w(TAG, "onBind");
return null;
}
class MyThread extends Thread {
@Override
public void run() {
// TODO Auto-generated method stub
for (int i = 0; i < 10; i++) {
try {
Thread.sleep(1500);
Intent intent = new Intent();
intent.setAction(MY_ACTION);
intent.putExtra("value", i);
sendBroadcast(intent);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
stopSelf();
}
}
}
當我調用stopService(intent)時,我仍然從下面發布的服務類中的循環中接收值
正確。 那是因為線程仍在運行。
我認為當我調用stopService()時,服務將被銷毀
它是。 那不會神奇地導致您的線程停止。 您啟動了線程; 您需要停止它,也許在onDestroy()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.