2015-12-15 25 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()