little Up beacause not fixed

Le jeudi 28 juin 2012 16:12:35 UTC+2, jean-francois garreau a écrit :
>
> The problem is : as I'm creating my custom view heriting from View, I 
> don't have any findById so the pattent viewHolder won't be useFull for me :(
>
> And I'm already implemnting it with the view recycling view system. 
> Indeed, in my View I use some Paint elements that I keep in the instance of 
> my view.
>
> Le jeudi 28 juin 2012 15:58:53 UTC+2, MagouyaWare a écrit :
>>
>> Nope... http://lmgtfy.com/?q=android+viewholder+pattern
>>
>> Thanks,
>> Justin Anderson
>> MagouyaWare Developer
>> http://sites.google.com/site/magouyaware
>>
>>
>> On Thu, Jun 28, 2012 at 7:50 AM, jean-francois garreau <
>> jean.francois.garr...@gmail.com> wrote:
>>
>>> You mean  : 
>>>
>>>
>>> public View getChildView(int groupPosition, int childPosition, boolean 
>>> isLastChild, View convertView, ViewGroup parent) {
>>>
>>>
>>>
>>>
>>>             ObjectSubViewNew subView = null;
>>>
>>>
>>>             if (convertView == null) {
>>>
>>>                     subView = new ObjectSubViewNew(mainContext, kmUnit);
>>>
>>>             } else {
>>>
>>>                     subView = (ObjectSubViewNew) convertView;
>>>
>>>             }
>>>
>>>  ....
>>> }
>>>
>>>
>>> ?
>>>
>>>
>>> Le jeudi 28 juin 2012 14:27:14 UTC+2, jean-francois garreau a écrit :
>>>
>>>> Hi everyone, 
>>>>
>>>> I have a problem for optimzing my application. More particulary, an 
>>>> ExpandListView. I found the scroll animation pretty slow compare to what I 
>>>> can see on other application. I have done severals optimizations yet but 
>>>> now I'm faced to a lack of idea for have a fluent scroll...
>>>>
>>>> What have done : 
>>>>
>>>>    1. First i start to create CustomView inherting from View
>>>>    2. I saw that in log I have lots of GC 
>>>>    3. I have use allocationTracket in DDMS in order to see what are 
>>>>    the object created who could cause my GC
>>>>    4. I identify lots of instanciations of String so I've modify my 
>>>>    model in order to carry all the string i need in order to avoid new 
>>>>    creations of String 
>>>>    5. I also try to write a reusable object corresponding to a 
>>>>    drawable instruction in order to skim throught all instruction during 
>>>> the 
>>>>    draw method
>>>>
>>>>
>>>> In order to gives you all information for helping me with my code, here 
>>>> is a litle piece of functionnal.
>>>>
>>>> My app is an application which gives you the movies showtimes near your 
>>>> position. The expand list show thoses informations :
>>>>
>>>>      *Name Cinema :                                           [Image]*
>>>>      distance          
>>>> ------------------------------**------------------------------**
>>>> ------------------------------
>>>>                 *Movie Name 1 :* time
>>>>                 passed time 1 | passed time 2 | *nearest time* | 
>>>>                 futur time 1 | futur time 2 
>>>>                 ------------------------------**
>>>> ------------------------------**-------------
>>>>                 *Movie Name 2 :* time
>>>>                 passed time 1 | passed time 2 | *nearest time* | 
>>>>                 futur time 1 | futur time 2 
>>>>                 ------------------------------**
>>>> ------------------------------**-------------
>>>>
>>>>
>>>> etc.
>>>>
>>>> As you can see, on each movie I list all showtimes for the cinema and I 
>>>> have a diferent display according to the current time
>>>>
>>>> In term of Model Object, I have this structure in my adapter : 
>>>>
>>>> ArrayList<TheaterBean> theaterList; // The list of my cinema
>>>> HashMap<String, Movie> mapMovie; // An hashmap which gives me the movie 
>>>> corresponding to an id
>>>>
>>>>
>>>> The problem I'm facing now is that when i look at the log, I still have 
>>>> lots of GC... and when i looked to the allocationTracker i see that :
>>>>
>>>> In first position comes android.graphic.Bitmap from method nativeCreate 
>>>> and it's corresponding stack is : 
>>>>
>>>>> android.graphics.Bitmap nativeCreate Bitmap.java -2 true 
>>>>> android.graphics.Bitmap createBitmap Bitmap.java 477 false 
>>>>> android.view.View buildDrawingCache View.java 6599 false 
>>>>> android.view.View getDrawingCache View.java 6450 false 
>>>>> android.view.ViewGroup drawChild ViewGroup.java 1571 false 
>>>>> android.view.ViewGroup dispatchDraw ViewGroup.java 1373 false 
>>>>> android.widget.AbsListView dispatchDraw AbsListView.java 1545 false 
>>>>> android.widget.ListView dispatchDraw ListView.java 3138 false 
>>>>> android.widget.**ExpandableListView dispatchDraw 
>>>>> ExpandableListView.java 229 false 
>>>>> android.view.View draw View.java 7008 false 
>>>>> android.widget.AbsListView draw AbsListView.java 2669 false 
>>>>> android.view.ViewGroup drawChild ViewGroup.java 1646 false 
>>>>> android.view.ViewGroup dispatchDraw ViewGroup.java 1373 false 
>>>>> android.view.ViewGroup drawChild ViewGroup.java 1644 false 
>>>>> android.view.ViewGroup dispatchDraw ViewGroup.java 1373 false 
>>>>> android.view.ViewGroup drawChild ViewGroup.java 1644 false 
>>>>
>>>>
>>>> In second position comes lots of  android.widget.**ExpandableListPosition 
>>>> comming from getRecycleCreate the stack is : 
>>>>
>>>>> android.widget.**ExpandableListPosition getRecycledOrCreate 
>>>>> ExpandableListPosition.java 121 false 
>>>>> android.widget.**ExpandableListPosition obtain 
>>>>> ExpandableListPosition.java 107 false 
>>>>> android.widget.**ExpandableListConnector$**PositionMetadata obtain 
>>>>> ExpandableListConnector.java 988 false 
>>>>> android.widget.**ExpandableListConnector getUnflattenedPos 
>>>>> ExpandableListConnector.java 176 false 
>>>>> android.widget.**ExpandableListConnector getItemViewType 
>>>>> ExpandableListConnector.java 464 false 
>>>>> android.widget.AbsListView$**RecycleBin getScrapView AbsListView.java 
>>>>> 4603 false 
>>>>> android.widget.AbsListView obtainView AbsListView.java 1465 false 
>>>>> android.widget.ListView makeAndAddView ListView.java 1745 false 
>>>>> android.widget.ListView fillDown ListView.java 670 false 
>>>>> android.widget.ListView fillGap ListView.java 641 false 
>>>>> android.widget.AbsListView trackMotionScroll AbsListView.java 3497 
>>>>> false 
>>>>> android.widget.AbsListView$**FlingRunnable run AbsListView.java 2994 
>>>>> false 
>>>>> android.os.Handler handleCallback Handler.java 587 false 
>>>>> android.os.Handler dispatchMessage Handler.java 92 false 
>>>>> android.os.Looper loop Looper.java 130 false 
>>>>> android.app.ActivityThread main ActivityThread.java 3835 false 
>>>>
>>>>
>>>> After I have lots of java.lang.ref.SoftReference comming from 
>>>> buildDrawingCache, the stack is : 
>>>>
>>>>> android.view.View buildDrawingCache View.java 6602 false 
>>>>> android.view.View getDrawingCache View.java 6450 false 
>>>>> android.view.ViewGroup drawChild ViewGroup.java 1571 false 
>>>>> android.view.ViewGroup dispatchDraw ViewGroup.java 1373 false 
>>>>> android.widget.AbsListView dispatchDraw AbsListView.java 1545 false 
>>>>> android.widget.ListView dispatchDraw ListView.java 3138 false 
>>>>> android.widget.**ExpandableListView dispatchDraw 
>>>>> ExpandableListView.java 229 false 
>>>>> android.view.View draw View.java 7008 false 
>>>>> android.widget.AbsListView draw AbsListView.java 2669 false 
>>>>> android.view.ViewGroup drawChild ViewGroup.java 1646 false 
>>>>> android.view.ViewGroup dispatchDraw ViewGroup.java 1373 false 
>>>>> android.view.ViewGroup drawChild ViewGroup.java 1644 false 
>>>>> android.view.ViewGroup dispatchDraw ViewGroup.java 1373 false 
>>>>> android.view.ViewGroup drawChild ViewGroup.java 1644 false 
>>>>> android.view.ViewGroup dispatchDraw ViewGroup.java 1373 false 
>>>>> android.view.ViewGroup drawChild ViewGroup.java 1644 false 
>>>>
>>>>  
>>>> To resume for 512 allocations : 
>>>>
>>>>    -  67 are coming from : android.graphics.Bitmap
>>>>    - 300 are coming from : android.widget.**ExpandableListPosition
>>>>    - 81 are coming from : java.lang.ref.SoftReference 
>>>>    AND java.lang.ref.**WeakReference 
>>>>
>>>> So I have no idea on how to solve my problem... If you have a new 
>>>> device you would probably don't see the lag effect I mention. For my tests 
>>>> I'm using a SGS. But with the emulator we can observe the GCs
>>>>
>>>> All the code is available here : 
>>>>
>>>> https://github.com/binomed/**CineShowTime-Android/blob/**
>>>> master/Libraries/CineShowTime/**src/com/binomed/showtime/**
>>>> android/layout/view/**ObjectSubViewNew.java<https://github.com/binomed/CineShowTime-Android/blob/master/Libraries/CineShowTime/src/com/binomed/showtime/android/layout/view/ObjectSubViewNew.java>
>>>>   
>>>> for the child view
>>>> https://github.com/binomed/**CineShowTime-Android/blob/**
>>>> master/Libraries/CineShowTime/**src/com/binomed/showtime/**
>>>> android/layout/view/**ObjectMasterView.java<https://github.com/binomed/CineShowTime-Android/blob/master/Libraries/CineShowTime/src/com/binomed/showtime/android/layout/view/ObjectMasterView.java>
>>>>   
>>>> for the group view
>>>> https://github.com/binomed/**CineShowTime-Android/blob/**
>>>> master/Libraries/CineShowTime/**src/com/binomed/showtime/**
>>>> android/adapter/view/**AbstractResultAdapter.java<https://github.com/binomed/CineShowTime-Android/blob/master/Libraries/CineShowTime/src/com/binomed/showtime/android/adapter/view/AbstractResultAdapter.java>
>>>>   
>>>> for the adpater (It's an utlity class but we find the sames methods as in 
>>>> ExpandableAdapter)
>>>>
>>>> the curent version on market only have the optimization of CustomView. 
>>>> : https://play.google.com/**store/apps/details?id=com.**
>>>> binomed.showtime&feature=**search_result#?t=**
>>>> W251bGwsMSwyLDEsImNvbS5iaW5vbW**VkLnNob3d0aW1lIl0.<https://play.google.com/store/apps/details?id=com.binomed.showtime&feature=search_result#?t=W251bGwsMSwyLDEsImNvbS5iaW5vbWVkLnNob3d0aW1lIl0.>
>>>>
>>>>
>>>> I'm open to all new idea for making my application faster :)
>>>>
>>>> Maybe by not invoking the requestLayout each time I set a movie but 
>>>> each time a scroll is ended ?
>>>>
>>>> If you have any question don't hesitate.
>>>>
>>>> regards
>>>>  
>>>>
>>>>  -- 
>>> You received this message because you are subscribed to the Google
>>> Groups "Android Developers" group.
>>> To post to this group, send email to android-developers@googlegroups.com
>>> To unsubscribe from this group, send email to
>>> android-developers+unsubscr...@googlegroups.com
>>> For more options, visit this group at
>>> http://groups.google.com/group/android-developers?hl=en
>>>
>>
>>

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to