2013-08-31 4 views
0

Вот мой код для запуска:Не удалось остановить службу?

Я начинаю свою службу в onCreate() моей деятельности.

Intent svc=new Intent(BeapSoundActivity.this, BackgroundService.class); 
       pendingIntent = PendingIntent.getService(BeapSoundActivity.this, 0, svc, 0); 

       AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 

       Calendar calendar = Calendar.getInstance(); 
       calendar.setTimeInMillis(System.currentTimeMillis()); 
       calendar.add(Calendar.SECOND, 2); 
       alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 10*1000, pendingIntent); 

Я не могу в состоянии остановить службу по телефону

StopService();

Вот мой Класс обслуживания:

public class BackgroundService extends Service{ 

// private static final String TAG = null; 
// MediaPlayer player; 
    MediaPlayer mMediaPlayer; 
    String strResponse; 
    int i=0; 

    static { 

//   StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 

      StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().permitAll().build()); 
     } 
    @Override 
    public IBinder onBind(Intent intent) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     mMediaPlayer = new MediaPlayer(); 
     Log.e("Oncreate","oncreate"); 


    } 
    public int onStartCommand(Intent intent, int flags, int startId) { 
//  player.start(); 
     Log.e("Onstartcommand","onstartcommand"); 

      pendingCount(); 

     return 1; 
    } 

    public void onStart(Intent intent, int startId) { 
     // TO DO 
//  super.onStart(intent,startId); 



     Log.e("Onstart","onstart"); 
//  pendingCount(); 
    } 
    public IBinder onUnBind(Intent arg0) { 
     // TO DO Auto-generated method 
     return null; 
    } 

    public void onStop() { 

    this.stopSelf(); 


    } 
    public void onPause() { 

    } 
    @Override 
    public void onDestroy() { 

     super.onDestroy(); 

      this.stopSelf(); 

//  player.stop(); 
//  player.release(); 
    } 

    @Override 
    public void onLowMemory() { 

    } 


} 

    public void pendingCount(){ 

      my operations during the service 

       } 


    } 


} 

Я также попытался с stopSelf() в моем OnDestroy(), но он также Didnt работал для меня.

Пожалуйста, предложите, как я могу решить эту проблему?

+0

y необходимо статический блок. –

+0

его просто несколько раз я не могу использовать свои веб-службы, я не думаю, что это проблема, stopService() вызывает методDestroy, где я сохраняю this.stopSelf(), но он не работал – user2717010

+0

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

ответ

0

Вы должны позвонить stopService() из другой деятельности. Или вы можете позвонить stopSelf() в службу (не в onDestroy()), когда требуемая работа закончится.

+0

yes Я вызвал stopService() из где я начал службу, когда пользователь нажимает кнопку «Назад». – user2717010

+0

попробуйте удалить статический блок, я полагаю, что он сохраняет сервис в живых. также попробуйте вернуть '2' из' onStartCommand' и удалить метод 'onStart()'. Также 'stopSelf()' в 'onDestroy()' избыточно. – sha256

0

Попробуйте использовать этот код, это может вам помочь.

stopService(new Intent(MainActivity.this,BackgroundService.class)); 
0

Что я могу видеть, что ваш StopService() работает нормально, чтобы остановить службу, но анонимный класс или то, что когда-либо вы используете внутри pendingCount() все еще работает, даже если сервис будет уничтожен .. Так что некоторые вещь, как этот

Взлет флаг в OnDestroy() и проверить это внутри pendingCount() циклическую часть и если этот флаг высоко уничтожить эту задачу также. Для более точного ответа добавьте полный pendingCount() код

0

Вы можете проверить мой answer, который я опубликовал ранее, и попытаться реализовать это. Надеюсь, это сработает для вас.

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