2015-12-15 27 views
1

我正在學習如何處理服務..我創建了一個小例子。 mainActivity向服務發送一個整數,服務使用該整數 作爲循環中的最大迭代次數,如代碼中所示。調用stopService後服務正在運行

的問題是,當我打電話stopService(意向),我還會收到值從張貼的服務類環below..i認爲當我打電話 stopService()的服務將被破壞

這是爲什麼hapenning?

服務

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(); 
    } 
} 
} 
+0

你必須等到你的線程完成其運行方法 – Blackbelt

回答

1

當我打電話stopService(意向),我仍然從服務類環下面貼

正確的接收值。這是因爲線程仍在運行。

我認爲,當我打電話stopService()的服務將被破壞

它。這不會神奇地導致你的線程停止。你開始了線程;你需要停止它,也許在onDestroy()