使用get方法无效的Android asyncTask

时间:2014-07-06 08:59:36

标签: android android-activity android-asynctask

我正在使用http get连接到一个站点并从中检索一些数据。为此,我需要定义asyncTask方法并使用asyncTask get方法来检索doInBackground方法中生成的结果。

从服务器获取数据的帮助方法非常好,因此无需在此处发布。当我拨打new LongOperation().execute().get()时,应用程序崩溃了。当我调试代码时,它会打开新窗口并显示Source not Found

这是我的代码:

Main activity:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_job_notification);
    try {
        ArrayList<Job> JobsStore = new LongOperation().execute().get();
    } catch (Exception e) {
        // TODO: handle exception
    }
    ...

asyncTask Methods

public class LongOperation extends AsyncTask<Void, Void, ArrayList<Job>> {
private final static String USER_AGENT = "Mozilla/5.0";
protected ArrayList<Job> doInBackground(String... params) {
    ArrayList<Job> JobsStore = SendRSSFeed();
    return JobsStore;
}      

@Override
protected void onPostExecute(ArrayList<Job> result) {    
    super.onPostExecute(result); 
}
...

我在这里做错了什么?

感谢。

2 个答案:

答案 0 :(得分:0)

使用LongOperation().execute().get()时,execute()开始运行异步任务并返回自身的实例。在返回的实例上运行get()再次运行异步任务,这似乎没有意义。

所以你可以使用LongOperation().get();

有关详细信息,请参阅http://developer.android.com/reference/android/os/AsyncTask.html#get()

答案 1 :(得分:0)

想出来。问题在于声明doInBackground方法。该参数必须设置为Void... params而不是String... params,因为我使用零参数调用此方法。