2014-12-01 6 views
-1

Я делаю одно приложение, которое загружает множество файлов. Я начал работу с одной службой, которая загружает файлы непрерывно, чтобы уведомление также показывало текущее состояние загрузки, моя проблема в том, когда приложение получило сбой .Notification не уволен, а обслуживание все еще работает в фоновом режиме. Я пытался прекратить обслуживание в ondestroy службы, но это не помогло мне, пожалуйста, помогите мнеКак остановить службу при сбое приложения

+0

исправление ошибки ... – danny117

ответ

-1

Возможно, вы можете решить это, уничтожив его на MainActivity onDestroy метод? поэтому, когда ваше приложение выйдет из строя, это остановит службу.

+0

Я загружаю файлы в фоновом режиме, поэтому всякий раз, когда я нажимаю кнопку «Назад», она уничтожает приложение, поэтому моя загрузка останавливается, что мне нужно всякий раз, когда приложение попадает в аварийное состояние, то время останавливается только на службе –

+0

Могу ли я увидеть ваш код обслуживания ? –

0

Из документации: http://developer.android.com/guide/components/services.html#Stopping

Запущенного сервис должен управлять своим жизненным циклом. То есть система не останавливает или не уничтожает службу, если она не должна восстанавливать системную память , и служба продолжает работать после того, как onStartCommand() возвращает . Таким образом, служба должна остановить себя, вызвав stopSelf() или другой компонент может остановить его, вызвав stopService().

Примеры:

1- вызова stopSelf() после работы сделано.

public class MyService extends Service { 
    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
     // Use a Thread to not block your UI when doing operations over the network. 
     // See http://developer.android.com/reference/android/app/Service.html for more information. 
     new Thread(new Runnable() { 
      @Override 
      public void run() { 
       downloadSetOfFiles(); 
       stopSelf(); 
      } 
     }).start(); 
     return START_NOT_STICKY; 
    } 
} 

2- вручную вызова stopService()

public class MyActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     mView.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       stopService(new Intent(MyActivity.this, MyService.class)); 
       // Note: If clients are bound to the service, 
       // then the service will only stop after all clients are unbound. 
      } 
     }); 
    } 
} 

Если вы не можете вручную остановить службу, потому что ваше приложение разбился, то служба должна прекратить себя, когда операция загрузки файлов через по телефону stopSelf().

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