应用程序未响应(ANR)正在执行服务android

应用程序未响应(ANR)正在执行服务android,android,service,runtime-error,Android,Service,Runtime Error,host.activity是我的包,host.framework.servicepromoria是一个android服务 这个错误是什么意思?这意味着您的服务正在执行一个相当长的操作(大多数ANR来自大于5秒的操作),并且是在UI线程上执行的。这可能是网络任务、数据库任务或其他长时间操作 您可以通过使用或在主UI线程之外的服务中运行任务来修复此问题 实际上,您可以直接将服务启动到一个新线程中,如下所示: Thread t = new Thread(){ public void run(){ ge

host.activity是我的包,host.framework.servicepromoria是一个android服务


这个错误是什么意思?

这意味着您的服务正在执行一个相当长的操作(大多数ANR来自大于5秒的操作),并且是在UI线程上执行的。这可能是网络任务、数据库任务或其他长时间操作

您可以通过使用或在主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)。正常服务的默认超时时间为20秒。如果您需要一个块在Servcie onCreate中操作,您需要启动一个新线程,或者您可以使用IntentService。

谢谢!但我正在使用AsyncTask进行下载操作。然后发布服务的代码。并尝试复制粘贴日志。在您的图像中很难阅读。目前,我不确定是什么:serviceConnectioncalling bindService()在单独的线程上实际上并没有在单独的线程上完成工作。