Android 你在后台工作吗
我需要有一个背景线程,工作无限期。我编写了以下代码来定义IntentService:Android 你在后台工作吗,android,service,intentservice,Android,Service,Intentservice,我需要有一个背景线程,工作无限期。我编写了以下代码来定义IntentService: public class RecordInternetUsageService extends IntentService { public RecordInternetUsageService() { super("test"); // TODO Auto-generated constructor stub } @Override protected void onHandleInten
public class RecordInternetUsageService extends IntentService {
public RecordInternetUsageService() {
super("test");
// TODO Auto-generated constructor stub
}
@Override
protected void onHandleIntent(Intent intent) {
synchronized (this) {
try {
wait(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Toast.makeText(this, "test", Toast.LENGTH_LONG).show();
}
}
我有两个问题,这是一个合适的类做作品无限期的背景为什么当我想使用by wait()方法休眠此线程时,抛出下面提到的异常?
“向死线程上的处理程序发送消息”。
我如何解决这个问题?要完成长时间的处理任务,即使您的应用程序已关闭,即在后台必须使用服务。。。但您可以在该服务的主线程上执行长时间的处理工作,否则您将得到ANR(android没有响应)。因此,您必须创建一个后台线程,提交该后台线程上的所有任务(由Handle类完成),并处理所有提交和响应的内容。。。为了总结此设计模式,提供了IntenServcie类 IntentService类在提交作业时自动调用线程,当作业完成时,它将终止服务并释放内存。IntentDrive完成其工作后立即退出 这里的问题是,您正在IntentService管理的线程内创建Toast。系统将使用与此线程关联的处理程序来显示和隐藏Toast 首先,Toast将正确显示,但当系统试图隐藏它时,onHandleIntent方法完成后,将抛出错误“向死线程上的处理程序发送消息”,因为创建Toast的线程不再有效