整个 Android 应用程序中的静态可绘制对象数组
Static drawable array through whole Android application
我的 res 文件夹中有一个 56 可绘制对象。
我在 2 个片段中使用它们。
创建一个 class 具有包含这些可绘制对象的静态数组并在我想使用它时调用它的 get 方法是一种很好的记忆方法吗?
或者我应该在每个片段中创建一个私有数组吗?
您应该在片段中创建私有数组。将它们全部放在另一个 class 中将意味着即使您不使用它们占用内存,它们也永远不会被破坏。此外,当应用程序进入后台时间过长时,静态数组将被删除,因此如果数组为 null
,您将需要额外的代码在恢复时重新加载数组
您可以使用资源 ID 创建一个静态 int 数组,这是一个示例:
public static final int[] DRAWABLE_ARRAY = {
android.R.drawable.sym_def_app_icon,
android.R.drawable.title_bar,
android.R.drawable.ic_menu_compass
};
那么这个数组的用法可能是这样的:
for (int i = 0; i < DRAWABLE_ARRAY.length ; i++) {
context.getResources().getDrawable(DRAWABLE_ARRAY[i]);
}
这样您就不会创建占用大量内存的对象,因为这些只是资源 ID
我的 res 文件夹中有一个 56 可绘制对象。
我在 2 个片段中使用它们。
创建一个 class 具有包含这些可绘制对象的静态数组并在我想使用它时调用它的 get 方法是一种很好的记忆方法吗?
或者我应该在每个片段中创建一个私有数组吗?
您应该在片段中创建私有数组。将它们全部放在另一个 class 中将意味着即使您不使用它们占用内存,它们也永远不会被破坏。此外,当应用程序进入后台时间过长时,静态数组将被删除,因此如果数组为 null
,您将需要额外的代码在恢复时重新加载数组您可以使用资源 ID 创建一个静态 int 数组,这是一个示例:
public static final int[] DRAWABLE_ARRAY = {
android.R.drawable.sym_def_app_icon,
android.R.drawable.title_bar,
android.R.drawable.ic_menu_compass
};
那么这个数组的用法可能是这样的:
for (int i = 0; i < DRAWABLE_ARRAY.length ; i++) {
context.getResources().getDrawable(DRAWABLE_ARRAY[i]);
}
这样您就不会创建占用大量内存的对象,因为这些只是资源 ID