【问题标题】:Timing AsyncTask onPostExecute method in two Fragments to finish at the same time in android定时两个Fragment中的AsyncTask onPostExecute方法在android中同时完成
【发布时间】:2019-03-12 18:20:52
【问题描述】:

我有两个 Android 片段(片段 A 和片段 B),片段 A 和片段 B 都执行 AsyncTask,该任务随后通过调用 API 填充 listView,效果很好。但是,listView 是 Fragment A 的填充时间比 Fragment B 中的 listView 需要更长的时间,我需要 Fragment B listView 和 Fragment A listview 在完成 AsyncTask onPostExecute 方法所需的时间上保持同步。你如何建议我去完成这个。

【问题讨论】:

    标签: java android listview android-fragments


    【解决方案1】:

    您可以将 onPostExecute() 之后的 Asynctasks 的结果保存在变量中,并调用一个函数来检查两个变量是否都已初始化,如果是,则可以进行将列表设置为列表视图的操作。

    喜欢,

    
        List<String> fragAList,fragBList;
    
        public void saveFirstList(List<String> data){
            fragAList=data;
            updateLists();
        }
    
        public void saveSecondList(List<String> data){
            fragBList=data;
            updateLists();
        }
    
        public void updateLists(){
            if(fragAList!=null && fragBList!=null){
                setDataToListViews(fragAList,fragBList);
            }
        }
    
    

    【讨论】:

    • 我虽然对这个Harshith Shetty,但如果不满足条件,上述解决方案不会考虑重新评估。最终 fragAList 和 fragBList 不会为 null,但由于 fragmentA 的 Async Tasks 需要更长的 FragmentB,所以最初 fragAList 将为 null 而 fragBList 不为 null,这将导致条件失败,并且不会发生任何事情。我最初在想一个自定义监听器。 fragA 和 fragB 在满足条件时进行侦听,而不是 if 语句。
    • 不管A先完成还是B先完成,都完成后设置数据并调用updateLists(),所以如果A需要时间,B会先完成并setData并调用updateLists未设置数据,因为未设置 ListA,一旦 A 完成,listA 将获取数据,updateLists 将更新两个列表。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 2019-11-16
    • 2011-04-06
    • 2012-11-05
    • 2013-02-28
    相关资源
    最近更新 更多