Android - 运行可能失败的后台任务

时间:2013-11-27 09:51:37

标签: android concurrency

我需要能够取消涉及网络请求的任务。 但是当出现问题时,我遇到了一些内存管理和异常处理问题。 例如:

我想创建一个用于在用户设备中搜索应用的文本编辑。

所以每当用户结束一个键时,我想清除当前的搜索任务,然后重新开始搜索。

我得到的问题是在android 4.4中,当试图加载应用程序的标签(获取它的名字)时,我得到一个例外。

我也尝试搜索联系人,我正在获取一张简单的照片,这是一张照片。

我不想要任何帮助处理这个错误,我想要一个解决方案,可以帮助我忽略这个错误(尝试catach不工作)目前整个ui得到卡住和应用程序崩溃。 我正在使用执行程序服务,并在用户给我输入时调用取消。但这还不够。

任何建议都将不胜感激,谢谢。

2 个答案:

答案 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