Java: застрял в бесконечном цикле - PullRequest
0 голосов
/ 12 октября 2019

Я хочу делать что-то, только когда моя служба полностью остановлена.

Поэтому я сделал общедоступную статическую переменную инициализированной ее значением false, в onCreate(), true и onDestroy(), false.

В моей деятельности:

if(TripService.trip_service_state)
{
   stopService(newIntent(ProfileActivity.this,TripService.class));
   while (TripService.trip_service_state);
   do_stuff();
}

В моей службе:

public static boolean trip_service_state=false;

onCreate()
{
    super.onCreate();
    trip_service_state=true;
}

onDestroy()
{
   trip_service_state=false;
   super.onDestroy();
}

Теперь, когда моя служба работает, приложение получает сообщение НЕ ОТВЕТИТЬ.

1 Ответ

0 голосов
/ 12 октября 2019

Поскольку Service выполняется в том же потоке, что и Activity, код, который установит флаг в значение false, не может быть выполнен: метод Activity никогда не останавливается. Вот почему вы получаете ANR.

Вместо этого вы можете отправить Broadcast из Service в Activity через LocalBroadcastManager. (Деятельность должна была бы динамически регистрировать и отменять регистрацию соответствующего BroadcastReceiver)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...