Java: 陷入死循环

Java: stuck in an infinite loop

我只想在我的服务完全停止时做一些事情。

所以我创建了一个 public 静态变量,将其初始化为 false,在 onCreate() 中初始化为 true,在 onDestroy() 中初始化为 false。

在我的 activity:

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();
}

现在,当我的服务 运行 时,应用会收到“未响应”消息。

由于 ServiceActivity 在同一线程上执行,因此无法执行将标志设置为 false 的代码:Activity 方法永远不会停止。这就是你收到 ANR 的原因。

您可以通过 LocalBroadcastManagerBroadcastService 发送到 Activity。 (Activity 必须动态注册和取消注册相应的 BroadcastReceiver