gpt4 book ai didi

android - 我的服务没有被破坏 - 如何停止服务

转载 作者:行者123 更新时间:2023-11-29 01:41:27 29 4
gpt4 key购买 nike

我是安卓新手。我想从 MainActivity 停止 Service。但我没有得到。在调用 stopService() 时,它只显示 Toast 消息。我观察到服务仍在后台运行。如何停止服务。这是我的示例代码。

public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
// Method to start the service
public void startService(View view) {
startService(new Intent(getBaseContext(), MyService.class));
}
// Method to stop the service
public void stopService(View view) {
stopService(new Intent(getBaseContext(), MyService.class));
}
}
public class MyService extends Service {
@Override
public IBinder onBind(Intent arg0) {
return null;
}
static int i=0;
private static final String Tag="MyService";
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
new Thread() {
public void run() {
while (true) {
Log.v(Tag,"Thread"+i);
}
}
}.start()
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
Toast.makeText(this, "Service Destroyed", Toast.LENGTH_LONG).show();
}
}

最佳答案

如果您在 onDestroy 中看到您的 Toast,则服务将停止,但我认为您对日志记录继续这一事实感到困惑。日志记录继续,因为它发生在一个单独的线程中。如果您也想让您的线程停止,您可以对您的服务进行一些简单的更改:

public class MyService extends Service {

private Thread mThread;

@Override
public IBinder onBind(Intent arg0) {
return null;
}
static int i=0;
private static final String Tag="MyService";
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
mThread = new Thread() {
public void run() {
while (!interrupted()) {
Log.v(Tag,"Thread"+i);
}
}
}.start()
return START_STICKY;
}
@Override
public void onDestroy() {
mThread.interrupt();
super.onDestroy();
Toast.makeText(this, "Service Destroyed", Toast.LENGTH_LONG).show();
}
}

注意 mThread 的使用和循环中 interrupted() 的检查。我没有对此进行测试,但我相信它应该有效。

关于android - 我的服务没有被破坏 - 如何停止服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24390810/

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