host.activity 是我的包,host.framework.ServicePromemoria 是一个安卓服务。
这个错误是什么意思?
host.activity 是我的包,host.framework.ServicePromemoria 是一个安卓服务。
这个错误是什么意思?
这意味着您的服务正在执行相当长的操作(大多数 ANR 来自大于 5 秒的操作)并且正在 UI 线程上执行。这可能是网络任务、数据库任务或其他一些长时间的操作。
您可以通过使用Thread或AsyncTask在主 UI 线程之外的服务中运行任务来解决此问题。
实际上,您可以直接将您的服务启动到一个新线程中,如下所示:
Thread t = new Thread(){
public void run(){
getApplicationContext().bindService(
new Intent(getApplicationContext(), YourService.class),
serviceConnection,
Context.BIND_AUTO_CREATE
);
}
};
t.start();
此外,如果您需要它以供以后使用,请缓存 bindservice 返回的值(如果有)。
虽然有一个可接受的答案,但我想在这里添加一些额外的内容。“应用程序无响应(ANR)执行服务 android”的原因是您的服务在超时期间没有完成它的生命周期调用(如 onCreate)。正常服务的默认超时时间是 20s 。如果您需要在 Servcie onCreate 中操作块,则需要启动一个新线程,或者您可以只使用 IntentService 。