我在应用程序中有一个本地服务,它在asynctask中执行一些网络操作。
在我的申请中,活动A和活动B有两个活动。
我的服务的生命周期是,活动是这样的。
In activity A:
1)stop service(in oncreate)
In activity B:
1)start service(in oncreate)
2)bindservice(in oncreate)
3)unbind service(in on destroy)
In service:
1)start download in async task(in oncreate)
2)stop async task(in ondestroy)
但服务仍在继续运行。我有什么东西不见了? 感谢
FIX:
i need to stop the async task before i call stopService. As the service is busy with asyn task, it will ignore my my stop requests.
1)send a msg to service in intent extra, to stop async task.
2)then call stop service
答案 0 :(得分:0)
在所有bindService()调用都有相应的unbindService()调用之后,服务将关闭。如果没有绑定的客户端,那么当且仅当某人在服务上调用了startService()时,该服务还需要stopService()。
因此,您需要调用stopService()来停止您在活动B 1)start service(in oncreate)
中的活动B onDestroy
中启动的服务。
阅读完您的评论后,以下内容可以帮到您。无需绑定服务。
public class DownloadService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
new DownloadTask().execute();
return START_STICKY;
}
@Override
public IBinder onBind(Intent arg0) {
return null;
}
@Override
public void onDestroy() {
Log.i(TAG, "Service destroyed!");
}
public class DownloadTask extends AsyncTask<String, Void, String>{
@Override
protected String doInBackground(String... params) {
// download here
return null;
}
@Override
protected void onPostExecute(String result) {
}
}
}
从此处活动A中的stopService和活动B中的startActivity。