gpt4 book ai didi

android - 调用 stopService 后服务正在运行

转载 作者:行者123 更新时间:2023-11-30 01:42:22 26 4
gpt4 key购买 nike

我正在学习如何处理服务..我创建了一个小示例。 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();
}
}
}

最佳答案

when i call stopService(intent) i still receive value from the loop in the service class posted below

正确。那是因为线程还在运行。

i think when i call stopService() the service will be destroyed

是的。这不会神奇地导致您的线程停止。你启动了线程;您需要停止它,也许在 onDestroy() 中。

关于android - 调用 stopService 后服务正在运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34292701/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com