gpt4 book ai didi

android - 如何停止在三星手机上创建过多的对象?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:44:58 24 4
gpt4 key购买 nike

我在许多 Android 三星手机上遇到动画速度变慢的问题。我已经追踪到问题,是垃圾收集太多了。但是,我的代码没有直接创建任何对象。

这是 DDMS 中分配跟踪器的堆栈跟踪。

  at com.samsung.android.multiwindow.MultiWindowStyle$1.createFromParcel(MultiWindowStyle.java:493) 
at com.samsung.android.multiwindow.MultiWindowStyle$1.createFromParcel(MultiWindowStyle.java:491)
at com.samsung.android.multiwindow.IMultiWindowFacade$Stub$Proxy.getMultiWindowStyle(IMultiWindowFacade.java:499)
at com.samsung.android.multiwindow.MultiWindowFacade.getMultiWindowStyle(MultiWindowFacade.java:81)
at android.app.Activity.getMultiWindowStyle(Activity.java:4681)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1688)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1264)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6614)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:813)
at android.view.Choreographer.doCallbacks(Choreographer.java:613)
at android.view.Choreographer.doFrame(Choreographer.java:583)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:799)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5678)

这会在用户触摸屏幕时创建数千个 Rect 和 Point 对象。

有人知道解决方法吗?

我不针对三星手机或使用他们的 SDK 或库。

最佳答案

嗯,我们在这种情况下使用一种设计模式,称为享元模式。如果客户端代码在您的控制之下,不确定这是否对您有帮助,如果是,则创建新对象,使用相同的对象,对象的属性(例如 Rect 将具有 x,y 坐标)存储在client 对象在一个数组中,并调用 Rect 对象的 draw 方法,将存储在数组中的 rect 对象的坐标传递给 client。

关于android - 如何停止在三星手机上创建过多的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27217001/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com