0

У меня есть приложение, в котором я создал услугу MyService.class Теперь MyService.class привязан к моей активности с помощью bindService(), но я хочу, чтобы моя служба работать в фоновом режиме, даже если активность уничтожает себя.Stop/Pause/Sleep Service, если соединение недоступно и возобновлено, если доступно

Так что я начал службу, а затем привязать его, как показано ниже:

private void doBindService() { 
    if (!isServiceBound){ 
    Log.d(LOG_TAG, "Binding Service..."); 
    if (mBtAdapter != null && mBtAdapter.isEnabled()){ 
     Intent intent = new Intent(MyActivity.this, MyService.class); 
     startService(intent); 
     bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE); 
    } 
    } 
} 

В методе OnDestroy MyActivity, я имею в отменяя службу

Теперь моя служба не работает гладко, пока соединение с перерывами удаленных устройств , Я хочу приостановить/спать/остановить эту услугу, если соединение прерывается, а затем каждые 60 секунд пытается запустить службу/соединение.

Я пробовал это, но не работает.

private void stopService() { 
    doUnbindService(); 
    stopService(new Intent(MyActivity.this, MyService.class)); 
    startService(new Intent(MyActivity.this, MyService.class)); 
} 

Пожалуйста, любая помощь будет очень признательна. Заранее спасибо!!!

+0

Если вы хотите, чтобы служба продолжать работать в фоновом режиме, после того, как деятельность разрушена, вам нужно использовать 'StartService()' 'не bindService()'. Связанная служба остановится, когда все ее клиенты отвяжутся от нее. – Karakuri

ответ

0

Попробуйте

  • создать метод, который выполнить операцию вы хотите
  • создать тему или Runnable класса
  • вызова метода Helper вы создали в бегах() бечевка или Runnable
  • Внутри службы onStartCommand запустите резьбу, если соединение доступно
  • thread.wait/sleep, если нет соединения
0

Я не уверен, что у меня есть понимание вашего запроса.

С помощью этого решения вы можете играть, приостанавливать и останавливать обслуживание. И сервис сделать некоторую работу каждые 60seconds

public class MyService extends Service { 

    public static boolean testConnexion; 

    private Timer timer; 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     timer = null; 
     testConnexion = true; 
    } 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 

     if (timer != null) { 
      timer.scheduleAtFixedRate(new TimerTask() { 
       @Override 
       public void run() { 
        if (testConnexion) { 
         //StartConnexion 
        } 
       } 
      }, 1000, 60000); 
     } 

     return START_NOT_STICKY; 
    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
     timer.cancel(); 
    } 
} 

В любой деятельности Чтобы запустить или остановить службу. (Вы можете позвонить StartService столько раз, сколько вы хотите, будет только один, который будет работать.)

if (v.getId() == R.id.startService) { 
      Intent intent = new Intent(this, MyService.class); 
      startService(intent); 
     } else if (v.getId() == R.id.stopService) { 
      Intent intent = new Intent(this, MyService.class); 
      stopService(intent); 
     } 

Чтобы приостановить действие (но не убить службу)

MyService.testConnexion = false; 

А для перезапуска

MyService.testConnexion = true; 

Ваши услуги не связаны с вашей деятельностью. Если вы убиваете свою деятельность, ваша служба продолжает работать.

Я надеюсь, что это может помочь вам

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

  • Нет связанных вопросов^_^