Android 如何减少片段中的数据加载时间?
我在我的android应用程序中有一个活动,它有几个片段作为选项卡。每个选项卡都有独立的API调用。我正在使用“进度”对话框显示和关闭数据加载UI。此活动需要花费大量时间来关闭“进度”对话框。我希望只有在加载所有片段的所有细节后,它才会消失。是否可以使每个片段独立,以便减少加载时间 //活动Android 如何减少片段中的数据加载时间?,android,android-fragments,progressdialog,Android,Android Fragments,Progressdialog,我在我的android应用程序中有一个活动,它有几个片段作为选项卡。每个选项卡都有独立的API调用。我正在使用“进度”对话框显示和关闭数据加载UI。此活动需要花费大量时间来关闭“进度”对话框。我希望只有在加载所有片段的所有细节后,它才会消失。是否可以使每个片段独立,以便减少加载时间 //活动 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedI
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
getDatePicker();
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_homescreen);
setSupportActionBar(toolbar);
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawerLayout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
toggle.getDrawerArrowDrawable().setColor(getResources().getColor(R.color.white));
NavigationView navigationView = (NavigationView) findViewById(R.id.sideNavView);
navigationView.setNavigationItemSelectedListener(this);
navigationView.setItemIconTintList(null);
}
public void getDatePicker() {
final AlertDialog.Builder builder = new AlertDialog.Builder(HomeScreenActivity.this);
LayoutInflater inflater = getLayoutInflater();
View dialog = inflater.inflate(R.layout.date_picker_dialog, null);
datePicker = dialog.findViewById(R.id.date_picker);
final SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-M-dd");
builder.setView(dialog)
// Add action buttons
.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
Some calculation about date...
titleArray.clear();
for (int i = 0; i <= elapsed; i++) {
...
titleArray.add(...);
}
HomeScreenPagerAdapter homeScreenPagerAdapter = new HomeScreenPagerAdapter(HomeScreenActivity.this, getSupportFragmentManager(), titleArray);
ViewPager viewPager = findViewById(R.id.view_pager);
viewPager.setAdapter(homeScreenPagerAdapter);
TabLayout tabs = findViewById(R.id.tabs);
tabs.setupWithViewPager(viewPager);
tabs.setTabMode(TabLayout.MODE_SCROLLABLE);
} catch (ParseException e) {
e.printStackTrace();
}
}
})
});
builder.create();
builder.show();
}
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
getDatePicker();
工具栏=(工具栏)findViewById(R.id.Toolbar\u主屏幕);
设置支持操作栏(工具栏);
抽屉布局抽屉=(抽屉布局)findViewById(R.id.DrawerLayout);
ActionBarDrawerToggle切换=新建ActionBarDrawerToggle(
这,抽屉,工具栏,R.string.navigation\u drawer\u open,R.string.navigation\u drawer\u close);
抽屉。添加抽屉链接器(切换);
toggle.syncState();
toggle.getDrawarRowDrawable().setColor(getResources().getColor(R.color.white));
NavigationView NavigationView=(NavigationView)findViewById(R.id.sideNavView);
navigationView.setNavigationItemSelectedListener(此);
navigationView.SetItemIContentList(空);
}
public void getDatePicker(){
final AlertDialog.Builder=新建AlertDialog.Builder(HomeScreenActivity.this);
LayoutInflater充气机=getLayoutInflater();
查看对话框=充气机。充气(R.layout.date\u picker\u对话框,空);
datePicker=dialog.findViewById(R.id.date\u picker);
最终简化格式简化格式=新简化格式(“yyyy-M-dd”);
builder.setView(对话框)
//添加操作按钮
.setPositiveButton(“确定”,新的DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface对话框,int-id){
关于日期的一些计算。。。
titleArray.clear();
对于(int i=0;i 0){
HomeScreenTextResoneFragment homeScreenFragment1=新的HomeScreenTextResoneFragment();
返回家园1;
}
HomeScreen片段HomeScreen片段=新的HomeScreen片段();
返回家园碎片;
}
@可空
@凌驾
公共字符序列getPageTitle(int位置){
返回titleArray.get(位置);
}
@凌驾
public int getCount(){
返回titleArray.size();
}
}
我有一个片段要加载到选项卡上是的。也可以加载第一个片段,去掉对话框,然后乐观地在后台加载其他选项卡数据。在您的情况下如何操作我们不知道,因为您没有提供代码。我已经编辑了我的问题。请帮助
public class HomeScreenPagerAdapter extends FragmentPagerAdapter {
@StringRes
private static final int[] TAB_TITLES = new int[]{R.string.home_tab1, R.string.home_tab2, R.string.home_tab3};
private final Context mContext;
private static List<String> titleArray;
public HomeScreenPagerAdapter(Context context, FragmentManager fm, List<String> titleArray) {
super(fm);
mContext = context;
this.titleArray = titleArray;
}
@Override
public Fragment getItem(int position) {
if (position == 0) {
HomeScreenFragment homeScreenFragment = new HomeScreenFragment();
return homeScreenFragment;
} else if (position > 0) {
HomeScreenFixturesOneFragment homeScreenFragment1 = new HomeScreenFixturesOneFragment();
return homeScreenFragment1;
}
HomeScreenFragment homeScreenFragment = new HomeScreenFragment();
return homeScreenFragment;
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return titleArray.get(position);
}
@Override
public int getCount() {
return titleArray.size();
}
}