异步任务不是从非活动开始的

时间:2013-09-13 17:09:10

标签: android android-asynctask

以下是我项目活动中的代码:

    CustomClass custom = new CustomClass(); 
    //Passing an array list
    result = custom.getResults(list);

此处CustomClass是库项目中的一个类,方法getResults(list)启动AsyncTask

getResults()方法:

    public List<String> getResults(List<String> string){        
        List<String> result= new ArrayList<String>();
        BackgroundTask task =  new BackgroundTask();
        task.execute(string);
        result= task.get();
        return result;
    }

我的异步任务:

    public class BackgroundTask extends AsyncTask<List<String>, Integer, List<String> >{
    List<String> results= new ArrayList<String>();
    @Override
    protected List<String> doInBackground(List<String>... params) {
        for (int i=0; i<params[0].size();i++) {
            // someOperation
        }
        return results; 
    }
    @Override
    protected void onPostExecute(List<String> result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);
    }
    @Override
    protected void onPreExecute() {
        // TODO Auto-generated method stub
        super.onPreExecute();
    }
    @Override
    protected void onProgressUpdate(Integer... values) {
        // TODO Auto-generated method stub
        super.onProgressUpdate(values);
    }


}

问题:AsyncTask未启动。当我调试并尝试进入AsyncTask课程时,我得到The source attachment does not contain the source for the file classloader.class。有人可以帮我吗?谢谢。

1 个答案:

答案 0 :(得分:1)

get()方法阻塞UI线程,这意味着onPreExecute无法运行(它必须在UI线程中运行)因此后台线程将永远不会启动。

取消对get()的调用并将“返回值”逻辑移动到onPostExecute。

当你在UI线程中时,

从不阻止。