簡體   English   中英

調用stopService后服務正在運行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM