我有一个像这样的TabLayout的Android应用程序:
每个标签都会加载一个片段,还有6个这样的标签。
它还有这样的导航抽屉:
点击选项后,新活动将被打开。
工具栏上的按钮也很少,点击新的活动即可打开。
该应用还有像这样的Sliding up面板:
问题在于,当我打开应用程序时,几秒钟后它会显示我:
当这个到来时,我可以在logcat中看到
应用程序可能在其主线程上做了太多工作
给出了here
的解决方案(此消息仅在某些设备上出现)当我们点击“确定”然后应用程序继续运行但几秒后再次弹出相同的消息。我注意到还有一件事,当我让应用程序打开更长时间后,这条消息不会出现,应用程序运行顺畅。
我想知道当我们打开Android应用程序时,其他活动是否也会加载到主UI线程上运行?
我认为当我们打开应用程序时,ViewPager中使用的片段将被加载到主UI线程上。
将片段添加到ViewPager的代码如下:
tabLayout = (TabLayout) findViewById(R.id.tabLayout);
viewPager = (ViewPager) findViewById(R.id.viewPager);
viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
viewPagerAdapter.addFragments(new HomeFragment(), "Home");
viewPagerAdapter.addFragments(new TrendingFragment(), "Best Deals");
viewPagerAdapter.addFragments(new HomeServicesFragment(), "Home Services");
viewPagerAdapter.addFragments(new EntertainmentFragment(), "Entertainment");
viewPagerAdapter.addFragments(new FashionFragment(), "Fashion");
viewPagerAdapter.addFragments(new VehicleServicesFragment(), "Vehicle Services");
viewPagerAdapter.addFragments(new OthersFragment(), "Other Services");
viewPager.setAdapter(viewPagerAdapter);
tabLayout.setupWithViewPager(viewPager);
另外我想知道我是否可以使用AsyncTask来加载这个TabLayout?我再次不知道在上面的代码中哪一行负责UI更新。我不确定这样做是否有助于解决问题?
答案 0 :(得分:0)
我收到消息的问题
应用程序可能在其主线程上做了太多工作
已经解决了,现在我想在这里写一下。问题出现在drawables
图像中,我的图像尺寸较小但分辨率较高,并且在ViewPager
中使用了该图像。在改变图像时,问题就消失了。
好的,上面我又问了一个问题:
我想知道其他活动是否也被加载以运行 我们打开Android应用程序时的主UI线程?
这个问题可能听起来很少,因为我们知道每个Activity都有自己的生命周期,并根据它创建和销毁。因此,当应用程序加载时,只有具有类别为LAUNCHER的intent-filter的主活动才会被加载。我问了这个问题,因为我在其他SharedPreferences
的主UI线程上创建了许多Activities
个文件。所以我认为创建SharedPreferences
文件可能是问题的原因之一。