android本地服务麻烦

时间:2013-05-29 05:42:31

标签: android service

我在应用程序中有一个本地服务,它在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 

1 个答案:

答案 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。