2013-05-29 4 views
0

У меня есть локальная служба в приложении, которая выполняет некоторую работу сети в асинтете.проблема локального обслуживания android

В моем приложении есть два вида деятельности деятельность А и деятельность Б.

жизненный цикл моей службы и деятельность, как это.

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

услуга будет закрыта после того, как все bindService() звонки были соответствующие их звонки unbindService(). Если нет связанных клиентов, то услуге также потребуется stopService(), если и только если кто-то вызвал startService() в службе.
Таким образом, вам необходимо вызвать 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) { 

      } 
    } 

} 

Отсюда StopService в активность А и startActivity в деятельности В.

+0

я не хочу, чтобы остановить службу в деятельности B, я хочу, чтобы остановить его в случае, если пользователь снова --thx запускает приложение –

+0

В этом случае вам нужно отвязать услугу в действии A. –

+0

Я нашел недостаток, см. Обновленный пост. Большое спасибо за помощь ур. –

Смежные вопросы