我正在使用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);
}
...
我在这里做错了什么?
感谢。
答案 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
,因为我使用零参数调用此方法。