gpt4 book ai didi

android - 完成工作后如何停止服务?

转载 作者:行者123 更新时间:2023-11-29 14:31:48 25 4
gpt4 key购买 nike

我有一个从我的 Activity 开始的服务。现在服务通过从 onStartCommand() 启动一个新线程来执行一些任务我想在线程完成其工作后停止服务。

我试过使用这样的处理程序

  public class MainService extends Service{

private Timer myTimer;
private MyHandler mHandler;


@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
mHandler = new MyHandler();
myTimer = new Timer();
myTimer.schedule(new MyTask(), 120000);
return 0;
}

private class MyTask extends TimerTask{

@Override
public void run() {
Intent intent = new Intent(MainService.this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
mHandler.sendEmptyMessage(0);
}

}

private static class MyHandler extends Handler{
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
Log.e("", "INSIDE handleMEssage");
//stopSelf();
}
}

首先它警告我,如果处理程序类不是静态的,它将导致泄漏我把它设为静态后,就不能调用 stopSelf(),因为它是非静态的。

我的方法正确还是有更简单的方法?

最佳答案

你应该使用 IntentService 而不是服务。它在单独的线程中自动启动,并在任务完成时自行停止。

public class MyService extends IntentService {

public MyService(String name) {
super("");
}

@Override
protected void onHandleIntent(Intent arg0) {

// write your task here no need to create separate thread. And no need to stop.

}

}

关于android - 完成工作后如何停止服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23821603/

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