2013-11-29 2 views
0

Моя программа пытаются получить местоположения GPS каждый раз, когда в интервале, определенном пользователемобработчик сообщений переоформляется на возобновление деятельности

@Override 
protected void onStart() { 
    super.onStart(); 
    mHandler.sendEmptyMessage(Call_GPS); } 

Для этого я создаю обработчик сообщений, и я использую sendEmptyDelayedMessage с величиной задержки введенный пользователем. В сообщении я вызываю метод getLocation(), который начать принимать координаты GPS и сохранить их

@SuppressLint("HandlerLeak") 
Handler mHandler = new Handler() { 
    @Override 
    public void handleMessage(Message msg) { 
     switch (msg.what) { 
     case Call_GPS: 
      getLocation(); 
      mHandler.sendEmptyMessageDelayed(Call_GPS,Integer.parseInt(Settings.GPSInt)*60000); 
     super.handleMessage(msg); 
      break;}}}; 

Этот код работает хорошо и с OnPause() и принимать GPS-координаты в интервале как запрос пользователя.

Моя проблема в том, что если я вернусь из onPause() в UI (onResume()), программа начнет возвращать GPS-координаты, поэтому, пожалуйста, помогите мне.

Подсказка: Я искал в интернете об этом, я прочитал, что обработчик запуска в потоке пользовательского интерфейса, и я думаю, что это является причиной моей проблемы, но я не знаю Решения

Примечания: Пожалуйста, не предлагайте решение об изменении updaterequest в getLocation(), мне нужно решение о обработчике

+0

В какой метод вы написали это 'Handler' код ?? – Naddy

+0

Код обработчика написан в том же классе – Moussawi

ответ

0

Я нашел решение это является вызовом обработчика из OnCreate() вместо OnStart()

0

Непонятно, какое поведение вы бы хотели, но если вы хотите, чтобы запросы останавливались в onPause, а не начинались снова, когда пользователь возвращается в приложение, тогда вам нужно удалить ожидающие сообщения из обработчика в onPause(). В противном случае они все равно будут находиться в очереди, когда приложение вернется в onResume и продолжит работу.

+0

Я имею в виду, что обработчик получает sendEmptyMessageDelayed(). В нормальном случае новое местоположение должно быть перезапущено после определенной задержки. Но что происходит, когда я возвращаюсь из onPause() в onResume(), обработчик начинает выполнение сообщения и принимает GPS-координаты, это означает, что он не продолжает задержку, которую нужно завершить, чтобы начать новое местоположение. Пожалуйста, дайте мне знать, ясно ли сейчас вопрос – Moussawi

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