android - 在设计超过 80 个 View 的 Activity 时,避免影响性能

标签 android

我是安卓新手。我正在创建一个应用程序,它应该处理 200 多个设置,主要是 bool 值。设置可以按类型分组,共有 5 组。我假设,用户不喜欢单独配置和保存每个组,但想配置所有设置并按保存 -> 一次保存所有设置,因此每个设置组有 5 个不同 Activity 的场景不适合。

我尝试做的是设置一个 TabHost,每个组都有单独的选项卡。在收到“超过 80 个 View ”警告后,我拆分了我的布局,现在每个组都有自己的 layout.xml;

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TableRow
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <CheckBox
            android:id="@+id/cbSetting1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/strSetting1" />
    </TableRow>

    <TableRow
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <CheckBox
            android:id="@+id/cbSetting2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/strSetting2" />
    </TableRow>

...
</TableLayout>

我在创建时夸大了这些 View :

View setting1View= getLayoutInflater().inflate(R.layout.group1_layout, null);
group1Tab.addView(view);

完成这些步骤后,我避免了“超过 80 个 View 警告”,但不会对性能产生影响,当所有 View 都膨胀时 -> Activity 将总共有超过 80 个 View ?

下一个问题:我是否应该在创建 View 时获取对所有复选框的引用:

CheckBox setting1 = (CheckBox)setting1View.findViewById(R.id.cbSetting1);

或者应该在我按下保存按钮时引用它们,例如:

onSaveClick{
      Boolean setting1Value = ((CheckBox)setting1View.findViewById(R.id.cbSetting1)).value
}

或者以其他方式尽可能减少对性能的影响?

有没有什么“好的模式”可以用来设计有很多 View 的应用程序?

提前致谢!

附言我知道,StackOverflow 不推荐“最佳实践”问题,但我已尝试尽可能提出定义明确的问题,希望我的帖子至少显示了我在该问题上的研究成果。

更新 我的错没有早点提到它——这些设置是远程存储的,并使用 HTTP 请求(使用 Web-api)访问。关于首选项 Activity/fragment 和 ListView 的建议是否适合这种情况?

最佳答案

根据您描述应用程序的方式,您似乎有很多相似的观点。我建议在每个选项卡中使用 ListViewListView 非常有效地处理大量 View 。

您将需要为您的 ListView 编写自定义适配器,但您可以巧妙地以一种不会一直调用 findViewById() 的方式来完成此操作(using the ViewHolder pattern)。

很难给出具体的建议,因为您没有准确描述这些设置项将包含什么,但是当您有很长的(事件可能略有不同) View 列表时,这个一般的想法很有效。如果你想在布局上有很大的灵 active ,这种模式会起作用。 If you want some standard settings behavior, check out PreferenceFragments ,或查看 Android 的 settings developer guide .

关于android - 在设计超过 80 个 View 的 Activity 时,避免影响性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21720715/

相关文章:

java - Activity 主错误

java - 尝试创建 Toast.makeText 时出错

java - ChildFragmentManager java.lang.IllegalStateException : Activity has been destroyed

android 操作栏 onNavigationItemSelected

android - 为什么我的 TextView 在 ImageView 下没有显示

java - 如何检测蓝牙耳机上的按钮按下情况

java - 在适配器中打开对话框

java - Android 时间小部件未接收更新

Android AsyncHttpClient,无法找到符号类 header

android - 使用 Google Drive 逻辑备份和同步 SQLite 数据库?