关于多个并发视图的iOS内存性能

时间:2016-12-08 23:50:48

标签: ios objective-c react-native

这是关于同时打开多个堆叠视图的内存管理的理论问题。

想象一堆火种卡(可以具有无限长度),以及用户左右,前后左右滑动的能力。通过来回,我的意思是,不是退出屏幕并且(最终)回收或释放的视图,它需要至少保持其形状(如果不是其内容),以便准确地放回到屏幕上,如果用户刷回去。

我很好奇这个内存会带来什么影响。我的猜测是,在某个任意点之后,你清除卡片但保持在堆栈中的位置。如果卡足够接近可能在屏幕上返回,您只需从api中提取内容即可。但是,随着视图计数变大(> 100),不会导致性能问题?

显然,必须有办法处理它,因为你可以在iOS上使用滚动视图/表视图创建任意长的列表。但是我想我需要像性能这样的表视图,而不需要实际需要表视图。

是否有处理此问题的标准方法?

1 个答案:

答案 0 :(得分:0)

如果没有具体的视觉效果,很难回答这个问题,但我怀疑你永远不必渲染超过两张或三张牌来达到预期的效果。编写一个自定义视图,在卡片到达第二个或第三个位置时(根据用户界面)懒惰地呈现卡片并不难。

或者,您可以使用using (AndroidJavaClass jcUnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) using (AndroidJavaObject joActivity = jcUnityPlayer.GetStatic<AndroidJavaObject>("currentActivity")) using (AndroidJavaObject joContext = joActivity.Call<AndroidJavaObject>("getApplicationContext")) using (AndroidJavaClass jcMediaScannerConnection = new AndroidJavaClass("android.media.MediaScannerConnection")) using (AndroidJavaClass jcEnvironment = new AndroidJavaClass("android.os.Environment")) using (AndroidJavaObject joExDir = jcEnvironment.CallStatic<AndroidJavaObject>("getExternalStorageDirectory")) { jcMediaScannerConnection.CallStatic("scanFile", joContext, new string[] { YOURFULL IMAGE PATH}, null, null); } 和自定义UICollectionView子类来实现此操作以堆叠卡片。