private class QueryResult {
List<String> name = new ArrayList<>();
List<String> location = new ArrayList<>();
List<String> type = new ArrayList<>();
List<Calendar> end = new ArrayList<>();
List<Calendar> start = new ArrayList<>();
public QueryResult( List<String> name,List<String> location,List<String> type, List<Calendar> end, List<Calendar> start ) {
this.name=name;
this.location=location;
this.type=type;
this.end=end;
this.start=start;
}
我想返回 5 个数组列表,所以我返回
return new QueryResult(namee,locationn,typee,end,strt);
此查询结果类在异步类中是私有的。
我在主活动中称之为异步,在oncreate中。但我不能使用数组列表。因为这是私人课程,我只能这样
Object obj= new RetrieveFeedTask().execute().get();
但我不能用那个对象做任何事情。 我应该公开类以使用该数组吗? 什么是解决方案? 还是我应该返回多个不同类型的数组用不同的方法?我找不到。我无法检索这些数组
我在 doinbackground 中返回这些数组,但我认为哪种异步方法现在并不重要。
从异步任务中检索对象值
这不起作用,因为它在写入主活动或主活动时出错。
我上了公开课,我得到了getter,但仍然没有工作
首先,永远不要调用 AsyncTask.execute.get。 这样做消除了使用 AsyncTask 的全部原因和优势,并且在 99.9% 的情况下都是错误的。 它会冻结您的手机,使其无响应。
onCreate有一个看门狗计时器,你可以触发计时器,你的应用程序将被终止。
使用 AsyncTask 的正确方法是将所有需要任务结果的代码放在 onPostExecute 函数(或从那里调用的函数(中。 不要把它放在调用 execute 之后,也不要调用 get 来获取结果。 然后只调用 AsyncTask.execute((。
有 1 或两个例外,但如果你没有足够的知识来自己回答这个问题,那么你还没有到可以正确确定这些例外的地步——所以不要这样做。