2015-06-03 80 views
1

我有一个疑问,希望澄清有关持有多个片段的活动的一些观点。从Android中的一个活动中加载多个片段

我有10个片段附加一个活动(HomeActivity.java);本次活动包含一个导航抽屉,多个图标,如搜索工具栏,添加,删除,返回键等

这我下面的结构如下,

用户点击的导航抽屉里的任何项目,我加载片段,

fragmentManager.beginTransaction().replace(R.id.fragment_container, fragmentToLoad, tagFragment).addToBackStack(tagFragment).commit(); 

fragmentToLoad - >片段的名称,tagFragment - >标记该特定片段。

我正在改变标题名称,工具栏根据HomeActivity本身的片段。

我的导航抽屉项目只有一个片段,并在fragment_container中被替换,但有一件事也存在,即这些片段也具有内部子片段。

在开始时,我说有10个片段,这10个片段是导航抽屉项目。有许多内在的煎炉。

现在,我使用接口(监听器)在HomeActivity.java本身中进行内部片段的点击监听器和其他活动。

所以有时我会发出警告“主线程上有很多工作要做”。

我知道有很多活动正在进行HomeActivity.java。

请告诉我这个架构是错误的或有任何解决方案。

+0

你可以使用像这样的片段......但通常不推荐使用这种片段,因为最终会出现一个真正臃肿的“超级活动”。首先,片段更能帮助开发平板电脑 - 避免重写或复制巨大的代码片段以进行平板电脑布局。 考虑根据用例将你的碎片分离成活动。 – Zadrox

+0

您应该考虑从片段移动到自定义视图。我不知道您收到的警告是否与您的应用程序架构相关,但过度使用碎片确实无济于事。 https://corner.squareup.com/2014/10/advocating-against-android-fragments.html – pawelo

+0

另外,如果您有一些时间,请仔细阅读Google IO 2014 iosched源代码 - https:// github。 COM /谷歌/ iosched。这是如何组织Android应用的一个很好的例子。 – Zadrox

回答

0

我不会说你的架构是错误的。相反,我会说,通过使用单个中心活动来处理这么多的片段,您正在为自己维护和调试该活动非常困难。

就警告信息而言,它取决于跳过的帧数(在日志中'主线程中有大量工作正在进行'之前打印的内容)。我相信如果这个数字是大约100,那么它确实不应该是一个令人严重关切的问题。请通过this SO answer进行完整说明!希望有所帮助。

相关问题