Android : Avoid Leaking Context In ArrayAdapter
Sep 28, 2010
I read the Avoiding Memory Leaks article with interest, and am concerned about danging references to the context object. I have a class like the following.
CODE:.........
Is it a problem to have a reference to a LayoutInflater object, since it must be using the context object somehow? Is there a better design pattern for what I'm trying to do here? (Use the context only to initially inflate the XML; from then on just use the View that's passed in to getView)
View 1 Replies
Mar 25, 2010
I have an ArrayAdapter powering a ListView. I would like to change the data behind the ArrayAdapter and update the ListView's. Sounds like notifyDataSetChanged(); would be exactly what I am looking for, but it updates the entire ListView, and I would prefer to update on a row-by-row basis.
Is there a way to do this with ArrayAdapter, or do I need to manage my data some other way if I want this functionality?
View 1 Replies
View Related
Dec 17, 2009
I have a ClassLoader in Activity's onCreate which loads a specific class from a library, and is working fine, except that when activity is destroyed, the memory resources about the loaded class are not released.If the same activity gets created multiple times very quickly (by launching it, and destroying it by pressing the Back button), and the process doesn't happen to be killed by Android yet, the memory usage of the corresponding process grows continuously until the app crashes,and process dies.The problem is that this happens even if no objects are instantiated using the loaded class. There seems a problem with garbage collector, which doesn't seem to release resources about the loaded class on Destroy even if there are no references to it.If android would have killed the process right away when the last activity of the process gets finished, there wouldn't be a problem, but this is managed by Android system, and it doesn't always kill the process right away. A workaround may be to kill the process explicitly on destroy, but this is not encouraged way to do, as Android is supposed to manage the process.
An alternative is to have a functionality that allows a class to be unloaded onDestroy, but this doesn't exist. By design, the garbage collector is supposed to take care of this.Is there a solution regarding this?
View 8 Replies
View Related
Dec 16, 2009
I'm trying to locate a memory leak in my app (it's client for a mediacenter). So I start it up, go to the screen that lists all movies, go back to my home activity, trigger the GC a few times manually via DDMS, dump the memory heap, pull it, convert it and load it into MIT in Eclipse.
Now the movie list screen is pretty heavy, around 800k of movie objects, which should be freed when I go back to the home screen. However, it stays allocated, with the GC root as a local variable in the main thread at ActivityThread.ContextCleanupInfo (see attached screenshot).
I've tried searching but there is no documentation on this class, not even in the source code. Is there any way to avoid this kind of behavior? Am I doing something wrong or is the problem in Android? My app is open source and can be checked out here[1]. http://code.google.com/p/android-xbmcremote/
View 4 Replies
View Related
Mar 31, 2009
What would be the best way to debug a leaking program?
I have developed a media player (includes a background service doing the playing, and a UI, and I access getResources(), MediaStore and things like this often).
Whenever I rotate the screen or reenter the app the total memory allocated to my process grows some 70 to 100KB. After some 6-10 rotations it is dead due to an out of memory exception.
In the meantime I have removed every static modifier to global vars, added an onDestroy function that unregisters the intents and service connection (and even puts every global var to null again :P), but still the program memory grows... and dies after a few rotations.
Given the situation I even made the program stop right after just calling setContentView, and still the memory leaks:
CODE:......................
View 3 Replies
View Related
Aug 7, 2009
http://developer.android.com/reference/android/app/Activity.html
The Activity Lifecycle could have implementation and or design bug: One case is to initialize a big image in onCreate(), try to reuse the image during the whole lifecycle, and then recycle the image in onDestroy(). Test showed that onCreate() is called every time one navigate away from the activity and back again, but onDestroy() is not called at all. This behavour causes memory leaking for the big image (size 960*1920). After 6+ times away and back to activity, the system runs out of memory and has to kill the process.
One workaround is to initialize the big image in onResume() and recycle in onPause(), but that's not so good reuse.
Could it be better to change the process (as shown in the diagram) a little bit such as: Call onDestroy() first when a process is killed?
View 3 Replies
View Related
Nov 18, 2010
I created a simple app with a ListView following the ListActivity examples I found on the net.
The app has 2 activities with the first having a button to create the second. When i hit the close button on the second activity I would like it to release its memory (or at least allow it to be garbage collected).
Currently it will never release.
I must be doing something wrong here because the MyListActivity never gets released. Can anyone tell me if I am doing something wrong with the way my activities are created/destroyed? or if my usage of the ListView is wrong?
My App as a zip - http://www.mediafire.com/?l26o5hz2bmbwk6j
Screen Shot of Eclipse MAT showing the list activity never releasing memory - www.mediafire.com/?qr6ga0k
View 1 Replies
View Related
Mar 31, 2009
I definitely have a memory leak problem and i'm trying to figure out there. After 6-10 config changes i'm getting out of memory in regards to BitmapFactory. I'm kind of suspect that this is going on within adapter. I have a listview . ListItems are an thumbnail image ( ImageView ) and TextView for text.
Here is the getView code.
CODE:..................
And get ThumbnailBitmap() is basically BitmapFactory.decodeByteArray ..
Is it possible that i'm leaking drawables ? Heap is not increasing by the way .
View 3 Replies
View Related
Oct 23, 2009
can anyone tell me any solution or tool provided by Android to find the exact place of memory leaking?
View 2 Replies
View Related
May 7, 2010
I'm writing an app that has a foreground service, content provider, and a Activity front end that binds to the service and gets back a List of objects using AIDL. The service does work and updates a database.
If I leave the activity open for 4-8+ hours, and go to the "Running Services" section under settings on the phone (Nexus One) an unusually large amount of memory being used is shown (~42MB).
I figure there is a leak. When I check the heap memory i get Heap size:~18MB, ~2MB allocated, ~16MB free. Analyzing the hprof in Eclipse MAT seems fine, which leads me to theorize that memory is leaking on the stack. Is this even possible? If it is, what can I do to stop or investigate the leak? Is the reported memory usage on the "Running Services" section of android even correct (I assume it is)?
Another note: I have been unable to reproduce this issue when the UI is not up (with only the service running)
View 1 Replies
View Related
May 5, 2010
Anybody else thinking that the revs are being leaked deliberatly and they are using us to test them and find the bugs?
View 22 Replies
View Related
Jul 7, 2010
I finally decided to do it. I had an idea to use the corner of a sheet of paper dabbed in krazy glue to slide up and down the sides and bottom of my phone while holding the screen down for a while. Surprised, it worked like a champ, and any excess glue that got anywhere on the phone was easily removed with acetone. Unless you have very sturdy hands, I would not advise this.
View 5 Replies
View Related
Nov 19, 2009
The bottom four buttons on my droid leak light if I look at it certain angle...
View 5 Replies
View Related
Nov 13, 2009
I just picked up a Droid today, and I just seen, above the 4 touch buttons when they are lit up, if you tilt the phone down you can see light leaking up to the edge of the screen. Does anyone else have this problem or should I return my device?
View 36 Replies
View Related
Apr 10, 2009
I'm running into difficulties overriding an ArrayAdapter to be displayed in a ListActivity. The ArrayAdapter is filled asynchronously. What I'm trying to do is add a special "sentinel" object that sits at the beginning of the list to show the progress of the computation. Ultimately this may be a progress bar, but right now I am just using a TextView as a placeholder. The problem is that the sentinel seems to get inserted multiple times into the list - not just once at the beginning. It *seems* to be appearing once per "page" of list data (so if 8 list items fit on the screen, my sentinel appears as the 1st, then 9th, then the 17th, etc..), but that interpretation may not be accurate. While maybe not how ArrayAdapters were intended to be extended, I thought something like this should work by simply overriding getView() to show my custom TextView for index.
View 3 Replies
View Related
Sep 3, 2010
I have the current code...
How would i put a vector into my array_spinner?
View 1 Replies
View Related
Jun 16, 2010
I have a strange problem with one of my ListActivity. I have overrided the default ArrayAdapter in order to customize my list. I have then filled the adapter with an ArrayList.
If I insert an element on the list and then call notifyDataSetChanged() on the adapter everything works fine.
But if I insert an element at the END of the list and then call notifyDataSetChanged(), the new element doesn't appear ...
And finally if I override getCount() on my adapter like this :
CODE:...............
View 11 Replies
View Related
Apr 19, 2010
I need some simple databinding for a Spinner. I want to display 2 items for each dropdownitem.
So when the user clicks the spinner I get a list like code...
I understand this can be done when using a Cursor, according to the databinding info on android dev. Like code...
However, I don't get my data from a database, so I don't use a cursor, I use a ArrayAdapter. Unfortunately it looks like there is no support for databinding with this adapter.
Is there a way to do this?
View 1 Replies
View Related
Jan 21, 2010
How can I launch a contextmenu from a contextmenu? I'm trying to replicate the MediaPlayer action that happens when you long click a song, then click "Add to playlist" in the resulting contextmenu. When you click that menu item, another contextmenu pops up with "Add to playlist" as the title, and "Current playlist", "New", and however-many-playlists-you-have defined after that.
View 4 Replies
View Related
Aug 13, 2010
I am using an ArrayAdapter<CharSequence> to populate the items to list in a android.widget.Spinner. That works all fine. But now I want to keep the list of items dynamic, i.e. I want to be able to add/remove items from the selection list at runtime. However, when I call adapter.add(item) or adapter.remove(item) I always get a UnsupportedOperationException, even though the Javadocs of the ArrayAdapter class describe these two methods as to be usable for exactly that intended purpose.
View 2 Replies
View Related
Oct 19, 2010
I need a gallery to be able to hold up to thirty custom views. These views need to added or removed whenever, they also need to be able to be display in a display bow beneath the gallery. How do I do this?I looked at the doc file for arrayadapter but it requires me to use a reference Id for each view I add, but each view is all java coded. Should I just use setId upon creation of the view and just throw that id into the array adapter, or is there a way to create one without using resource id's?
View 1 Replies
View Related
Sep 18, 2009
i m having Array Adapter it displays list views normal whenever i click on that particular item from the list it doesn't works.can u tel me how to solve this.
View 2 Replies
View Related
Apr 27, 2010
I'm trying to filter my ListView which is populated with this ArrayAdapter:
CODE:............
However, when I call filter('test') on the filter nothing happens at all (or the background-thread is run, but the list isn't filtered as far as the user conserns).
View 2 Replies
View Related
Nov 4, 2009
I have subclassed ArrayAdapter to set the color of text to RED if the string does not contain 100%, this has been added to a ListView. The problem is that some of the rows show as red when they contain 100%.
CODE:.....................
View 7 Replies
View Related
Sep 12, 2010
I have an ArrayAdapter in my activity, and when a certain event occur, I'd like to make a specific element flash, or have it highlighted in some way for a couple of seconds. Is there a way to do that?
View 11 Replies
View Related
Mar 24, 2010
I had a EditText , a button and a spinner . When click the button , the spinner will add a new item with name you entered in the EditText. But here is the question, my adapter.add() method seems doesn't work...here is my code...
View 5 Replies
View Related
Dec 12, 2009
I have a ListView that has some minor visual preferences that are set in a PreferenceScreen. These preferences are simple booleans to show or not to show some specific TextViews on each item in my ListView.
Anyhow, when these preferences are changed, I need to notify my ArrayAdapter that the data has changed in order to get the list redrawn. However, doing this via an OnSharedPreferenceChangeListener wouldn't really be optimal because there are several preferences that you can change, that would cause an unnecessary amount of updates to the ArrayAdapter.
So, to the question: How can I identify when my ListActivity has occurred on the screen after closing my PreferenceActivity, which I then could use to check for changes in the preferences, and only then notify the ArrayAdapter.
The ArrayAdapter being an inner class of my ListActivity, which is set as a ListAdapter.
View 1 Replies
View Related
Apr 19, 2010
I have an ArrayAdapter wrapped around an ArrayList of custom objects. I'd like to write a custom filter for that adapter so that when I call getListAdapter().getFilter().filter("abc") the list will get filtered by an arbitrary transformation of "abc".
I thought I would just try to override ArrayAdapter.getFilter(), but that requires I re-implement the private ArrayAdapter.ArrayFilter which requires access to a bunch of ArrayAdapter's private instances.
What's the simplest way to do this?
View 1 Replies
View Related
Sep 14, 2010
I need to create an ArrayAdapter and a Spinner that are totally dynamic and have nothing to do with the layout file.
View 2 Replies
View Related
Oct 27, 2010
Currently my ListView is filling up with the given String[] but I wanted to alternate some styles on the ListView items. Something weird is happening (I'm surely missing something obvious); The ListView Index is not fixed and the styles are not alternating as supposed. My Code is the following:
import android.app.ListActivity;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;..................
View 3 Replies
View Related