2014-11-30 6 views
9

Ich habe Probleme mit Animationen, die auf vielen Android Samsung Handys verlangsamen. Ich habe das Problem verfolgt und es ist zu viel Müllsammlung. Keines der Objekte wird jedoch direkt von meinem Code erstellt.Wie man übermäßige Objekterstellung auf Samsung-Telefonen stoppt?

Dies ist der Stack-Trace vom Allocation Tracker in 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) 

Dadurch werden Tausende von Rect- und Point-Objekten erstellt, wenn der Benutzer den Bildschirm berührt.

Kennt jemand eine Umgehung?

Ich ziele nicht auf Samsung-Telefone oder die Verwendung ihrer SDKs oder Bibliotheken.

+2

Es sieht so aus, als ob Samsungs Multitasking-Unterstützung aktiviert ist. Vielleicht können Sie Ihre App erzwingen, dem Samsung-Gerät mitzuteilen, die Unterstützung mehrerer Fenster für Ihre App zu deaktivieren. Reagieren Sie nicht auf mich .. Ich bin nicht vertraut mit Samsung Multi Window-Funktion. siehe http://stackoverflow.com/questions/14111052/adding-multi-window-support-to-android-application – ecle

+1

@theJosh, Hast du noch etwas zu diesem Thema gelernt? – Tenfour04

+0

@ Tenfour04 Nein, ich bin nicht näher dran. Samsung ist mein Erzfeind. – theJosh

Antwort

0

Nun, da kommt ein Designmuster ins Spiel, das wir für Situationen wie dieses, genannt Fliegengewicht, verwenden. Nicht sicher, ob dies Ihnen hilft, wenn der Client-Code unter Ihrer Kontrolle ist, wenn dies der Fall ist, die neuen Objekte zu verwenden, verwenden Sie das gleiche Objekt, wobei die Eigenschaften des Objekts (z. B. Rect werden x, y-Koordinaten) gespeichert werden client-Objekt in einem Array und rufen Sie die draw-Methode für das Rect-Objekt auf und übergibt die Koordinaten des rect-Objekts, das im Array im Client gespeichert ist.