【发布时间】:2018-01-26 21:52:16
【问题描述】:
ViewPager 中有 5 个片段。在MainActivity中初始化ViewPager:
private void setupViewPager(ViewPager viewPager) {
ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
CalendarFragment scheduleFragment = new CalendarFragment(); // this should be in getItem()
ServicesFragment servicesFragment = new ServicesFragment(); // this should be in getItem()
ReviewsFragment reviewsFragment = new ReviewsFragment(); // this should be in getItem()
NotificationFragment notificationFragment = new NotificationFragment(); // this should be in getItem()
ProfileFragment profileFragment = new ProfileFragment(); // this should be in getItem()
viewPagerAdapter.addFragment(scheduleFragment); // this line can cause crashes
viewPagerAdapter.addFragment(servicesFragment); // this line can cause crashes
viewPagerAdapter.addFragment(reviewsFragment); // this line can cause crashes
viewPagerAdapter.addFragment(notificationFragment); // this line can cause crashes
viewPagerAdapter.addFragment(profileFragment); // this line can cause crashes
viewPager.setAdapter(viewPagerAdapter);
}
在ProfileFragment 中,我与google Maps 合作。我初始化为onCreateView():
if (mMap == null) {
final OnMapReadyCallback mapListener = this;
new Handler().postDelayed(() -> {
if (isAdded()) {
mapFragment = (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(mapListener);
}
}, 1000);
}
尝试在onViewCreated()和onResume()上初始化,结果是一样的。
所以问题是当我按下 5 个菜单项中的 4 个时,它会挂起半秒钟。因为当您点击 4-Fragment NotificationFragment 时,同时会创建一个 5-Fragment ProfileFragment,也就是说,它们可以工作:
D/== Profile Fragment ==: onAttach() D/== Profile Fragment ==: onCreateView() D/== Profile Fragment ==: onViewCreated() D/== Profile Fragment ==: onResume()
问题:
-
是否可以确保当您单击菜单项时,仅触发与我单击的此
fragment相关的那些方法,而接下来会初始化未找到fragments的方法? -
差不多,但是
ProfileFragment中的google map初始化并没有延迟主线程?
UPD:
我刚刚意识到Fragment的打开速度很慢是因为layout,这是因为Google Maps片段而不是因为OnMapReadyCallback
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
当我从layout.xml 中删除google maps 时,它会很快工作。但我需要google maps。那么现在该怎么办,怎么解决呢?
【问题讨论】:
标签: java android google-maps android-fragments android-viewpager