我需要能够取消涉及网络请求的任务。 但是当出现问题时,我遇到了一些内存管理和异常处理问题。 例如:
我想创建一个用于在用户设备中搜索应用的文本编辑。
所以每当用户结束一个键时,我想清除当前的搜索任务,然后重新开始搜索。
我得到的问题是在android 4.4中,当试图加载应用程序的标签(获取它的名字)时,我得到一个例外。
我也尝试搜索联系人,我正在获取一张简单的照片,这是一张照片。
我不想要任何帮助处理这个错误,我想要一个解决方案,可以帮助我忽略这个错误(尝试catach不工作)目前整个ui得到卡住和应用程序崩溃。 我正在使用执行程序服务,并在用户给我输入时调用取消。但这还不够。
任何建议都将不胜感激,谢谢。
答案 0 :(得分:1)
如果你正在使用AsyncTask我想建议你这样做
AsyncTask<Void, Void, Void> a = new AsyncTask<Void, Void, Void>(){
@Override
protected Void doInBackground(Void... params) {
return null;
}
};
a.execute();
// at some point you want to cancel just use
a.cancel(true);
您甚至可以将任务放在List或数组和循环中,以便随时取消它。
答案 1 :(得分:0)
您可以这样尝试:您想要的是通过网络获得背景结果并在视图中显示结果,您可以将监听器注册到一个任务。你可以回调侦听器的方法在视图中使用show result如果它在后台获得结果,如果你不需要当前任务的结果并且想要satrt下一个任务,你只能删除当前任务的监听器,所以视图将会不重新加载
这是我的想法,我很抱歉我的英文不好,如果你没有看到,你可以给我发消息,我的电子邮件是bjltxsp@gmail.com