如何在android tablayout活动中使用异步任务......?

时间:2016-08-02 10:12:14

标签: android listview android-fragments asynchronous

大家好,我们需要知道在布局活动选项卡中使用Async的正确方法是什么。

在我的任务中有一个带有两个标签的活动。

Tab1 Tab2

Tab1从服务器加载数据并显示数据。

Tab2还从服务器加载另一个数据并在列表视图中显示数据。

我在tab1和tab2中使用Async Task但问题是当活动开始时,两个异步任务类同时执行会导致错误。

我需要如何在第一个标签片段可见的时候使用它然后运行第一个异步任务,当第二个片段可见时再运行第二个异步任务一个人。

3 个答案:

答案 0 :(得分:1)

您可以使用这两种方案:

1)您可以在活动中同时调用AsyncTasks并在两个标签中显示数据。

2)按照问题

  

我在tab1和tab2中使用Async Task但问题是当活动开始时,两个Async Task类同时执行导致错误。

您应该在AsyncTask方法中执行setUserVisibleHint(),当您的片段完全可见时,该方法会调用。

使用:

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    // TODO Auto-generated method stub
    super.setUserVisibleHint(isVisibleToUser);

    if (isVisibleToUser) {
      // execute your asynctask here
    }
}

答案 1 :(得分:0)

在我看来,您最好只使用一个异步任务从服务器获取数据,然后逐个处理选项卡

答案 2 :(得分:0)

OnTabSelectedListener添加到您的TabLayout

// run asynctask 1 first and then
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            if (tab.getPosition() == 0)
                // run asynctask 1
            else // run asynctask2
        }

        @Override
        public void onTabUnselected(TabLayout.Tab tab) {

        }

        @Override
        public void onTabReselected(TabLayout.Tab tab) {

        }
    });