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();
}
现在,当我的服务 运行 时,应用会收到“未响应”消息。
由于 Service
与 Activity
在同一线程上执行,因此无法执行将标志设置为 false 的代码:Activity 方法永远不会停止。这就是你收到 ANR 的原因。
您可以通过 LocalBroadcastManager
将 Broadcast
从 Service
发送到 Activity
。 (Activity 必须动态注册和取消注册相应的 BroadcastReceiver
)
我只想在我的服务完全停止时做一些事情。
所以我创建了一个 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();
}
现在,当我的服务 运行 时,应用会收到“未响应”消息。
由于 Service
与 Activity
在同一线程上执行,因此无法执行将标志设置为 false 的代码:Activity 方法永远不会停止。这就是你收到 ANR 的原因。
您可以通过 LocalBroadcastManager
将 Broadcast
从 Service
发送到 Activity
。 (Activity 必须动态注册和取消注册相应的 BroadcastReceiver
)