[android-developers] Re: activity looses ArrayList<> items

2012-07-08 Thread Doug
What you really need to do is stop the thing that's updating your list 
before serializing it, then restart it from the point where it left off 
after deserializing it.  Or find another way of coordinating this 
background work you're doing.

Also, you shouldn't be calling restoreRecents in both onCreate and 
onRestoreInstanceState.  Pick one or the other.

Doug

On Thursday, July 5, 2012 1:35:07 PM UTC-7, alex b wrote:
>
> I saw the notice about the syncronization of the Vector type, but it 
> didn't help me find a solution to the problem.  What I believe i need to do 
> is...
>  
> lock the ArrayList, Vector whatever
> update the ArrayList
> unlock the ArrayList
>  
> but I don't know how to accomplish this.
>
>  
>
> On Tuesday, July 3, 2012 1:36:58 PM UTC-7, RichardC wrote:
>
>> I don't think Vector is thread safe in the way you expect did you read: 
>>
>> *"This class is equivalent to 
>> ArrayList 
>> with 
>> synchronized operations. This has a performance cost, and the 
>> synchronization is not necessarily meaningful to your application: 
>> synchronizing each call to get, for example, is not equivalent to 
>> synchronizing on the list and iterating over it (which is probably what you 
>> intended). If you do need very highly concurrent access, you should also 
>> consider 
>> CopyOnWriteArrayList
>> . "
>> *
>> http://developer.android.com/reference/java/util/Vector.html 
>>
>> The implication of the above is that your Vector change be changed from 
>> another thread whilst you are trying to serialize it.
>>
>>
>> On Monday, July 2, 2012 8:52:46 PM UTC+1, alex b wrote: 
>>>
>>> I have an activity that contains a private Vector, thread safe 
>>> version of ArrayList.  The activity adds items to the ArrayList, and in 
>>> onSaveInstanceState() I save the data (see code below).  The problem is 
>>> that it looses items and it seems to have after the GC runs.  So what am I 
>>> missing?
>>>
>>>
>>> private static RecentItems _lstRecent;
>>> 
>>> @Override
>>> public void onCreate(Bundle savedInstanceState) {
>>> 
>>> super.onCreate(savedInstanceState);
>>> setContentView(R.layout.main);
>>> 
>>>  restoreRecents(savedInstanceState);
>>> }
>>>
>>> @Override
>>> protected void onSaveInstanceState(Bundle outState){
>>> super.onSaveInstanceState(outState);
>>> 
>>> String s=serializeIt(_lstRecent);
>>> bundle.putString("lstRecent", s);
>>> }
>>> 
>>> @Override
>>> protected void onRestoreInstanceState(Bundle outState){
>>> super.onSaveInstanceState(outState);
>>> 
>>> this.restoreRecents(outState);
>>> }
>>>
>>> private void restoreRecents(Bundle bundle){
>>>  if (bundle!=null){
>>>  String s = bundle.getString("lstRecent");
>>> _lstRecent=deserializeIt(s);
>>> }
>>>  
>>> if (_lstRecent ==null)
>>> _lstRecent=new RecentItems();//unt
>>>
>>> }
>>>
>>>

-- 
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

[android-developers] Re: activity looses ArrayList<> items

2012-07-05 Thread alex b
I've isolated the problem and this has nothing to do with ArrayList or 
Vector and everything to do with Garbage Collector.  Both of those are 
working fine exactly as I coded them when I run the code in an isolated 
activity.  Apparently GC is destorying my activity and recreating it and 
my onSaveInstanceState()/onRestoreInstanceState() code isn't working 
correctly.
 

On Thursday, July 5, 2012 1:35:07 PM UTC-7, alex b wrote:

> I saw the notice about the syncronization of the Vector type, but it 
> didn't help me find a solution to the problem.  What I believe i need to do 
> is...
>  
> lock the ArrayList, Vector whatever
> update the ArrayList
> unlock the ArrayList
>  
> but I don't know how to accomplish this.
>
>  
>
> On Tuesday, July 3, 2012 1:36:58 PM UTC-7, RichardC wrote:
>
>> I don't think Vector is thread safe in the way you expect did you read: 
>>
>> *"This class is equivalent to 
>> ArrayList 
>> with 
>> synchronized operations. This has a performance cost, and the 
>> synchronization is not necessarily meaningful to your application: 
>> synchronizing each call to get, for example, is not equivalent to 
>> synchronizing on the list and iterating over it (which is probably what you 
>> intended). If you do need very highly concurrent access, you should also 
>> consider 
>> CopyOnWriteArrayList
>> . "
>> *
>> http://developer.android.com/reference/java/util/Vector.html 
>>
>> The implication of the above is that your Vector change be changed from 
>> another thread whilst you are trying to serialize it.
>>
>>
>> On Monday, July 2, 2012 8:52:46 PM UTC+1, alex b wrote: 
>>>
>>> I have an activity that contains a private Vector, thread safe 
>>> version of ArrayList.  The activity adds items to the ArrayList, and in 
>>> onSaveInstanceState() I save the data (see code below).  The problem is 
>>> that it looses items and it seems to have after the GC runs.  So what am I 
>>> missing?
>>>
>>>
>>> private static RecentItems _lstRecent;
>>> 
>>> @Override
>>> public void onCreate(Bundle savedInstanceState) {
>>> 
>>> super.onCreate(savedInstanceState);
>>> setContentView(R.layout.main);
>>> 
>>>  restoreRecents(savedInstanceState);
>>> }
>>>
>>> @Override
>>> protected void onSaveInstanceState(Bundle outState){
>>> super.onSaveInstanceState(outState);
>>> 
>>> String s=serializeIt(_lstRecent);
>>> bundle.putString("lstRecent", s);
>>> }
>>> 
>>> @Override
>>> protected void onRestoreInstanceState(Bundle outState){
>>> super.onSaveInstanceState(outState);
>>> 
>>> this.restoreRecents(outState);
>>> }
>>>
>>> private void restoreRecents(Bundle bundle){
>>>  if (bundle!=null){
>>>  String s = bundle.getString("lstRecent");
>>> _lstRecent=deserializeIt(s);
>>> }
>>>  
>>> if (_lstRecent ==null)
>>> _lstRecent=new RecentItems();//unt
>>>
>>> }
>>>
>>>

-- 
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

Re: [android-developers] Re: activity looses ArrayList<> items

2012-07-05 Thread Kostya Vasilyev
All activity lifecycle callbacks are invoked on the same, main, UI thread.

2012/7/6 alex b 

> I saw the notice about the syncronization of the Vector type, but it
> didn't help me find a solution to the problem.  What I believe i need to do
> is...
>
> lock the ArrayList, Vector whatever
> update the ArrayList
> unlock the ArrayList
>
> but I don't know how to accomplish this.
>
>
>
> On Tuesday, July 3, 2012 1:36:58 PM UTC-7, RichardC wrote:
>
>> I don't think Vector is thread safe in the way you expect did you read:
>>
>> *"This class is equivalent to 
>> ArrayList 
>> with
>> synchronized operations. This has a performance cost, and the
>> synchronization is not necessarily meaningful to your application:
>> synchronizing each call to get, for example, is not equivalent to
>> synchronizing on the list and iterating over it (which is probably what you
>> intended). If you do need very highly concurrent access, you should also
>> consider 
>> CopyOnWriteArrayList
>> . "
>> *
>> http://developer.android.com/**reference/java/util/Vector.**html
>>
>>
>> The implication of the above is that your Vector change be changed from
>> another thread whilst you are trying to serialize it.
>>
>>
>> On Monday, July 2, 2012 8:52:46 PM UTC+1, alex b wrote:
>>>
>>> I have an activity that contains a private Vector, thread safe
>>> version of ArrayList.  The activity adds items to the ArrayList, and in
>>> onSaveInstanceState() I save the data (see code below).  The problem is
>>> that it looses items and it seems to have after the GC runs.  So what am I
>>> missing?
>>>
>>>
>>> private static RecentItems _lstRecent;
>>>
>>> @Override
>>> public void onCreate(Bundle savedInstanceState) {
>>>
>>> super.onCreate(**savedInstanceState);
>>> setContentView(R.layout.main);
>>>
>>>  restoreRecents(**savedInstanceState);
>>> }
>>>
>>> @Override
>>> protected void onSaveInstanceState(Bundle outState){
>>> super.onSaveInstanceState(**outState);
>>>
>>> String s=serializeIt(_lstRecent);
>>> bundle.putString("lstRecent", s);
>>> }
>>>
>>> @Override
>>> protected void onRestoreInstanceState(Bundle outState){
>>> super.onSaveInstanceState(**outState);
>>>
>>> this.restoreRecents(outState);
>>> }
>>>
>>> private void restoreRecents(Bundle bundle){
>>>  if (bundle!=null){
>>>  String s = bundle.getString("lstRecent");
>>> _lstRecent=deserializeIt(s);
>>> }
>>>
>>> if (_lstRecent ==null)
>>> _lstRecent=new RecentItems();//unt
>>>
>>> }
>>>
>>>  --
> 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

[android-developers] Re: activity looses ArrayList<> items

2012-07-05 Thread alex b
I saw the notice about the syncronization of the Vector type, but it didn't 
help me find a solution to the problem.  What I believe i need to do is...
 
lock the ArrayList, Vector whatever
update the ArrayList
unlock the ArrayList
 
but I don't know how to accomplish this.

 

On Tuesday, July 3, 2012 1:36:58 PM UTC-7, RichardC wrote:

> I don't think Vector is thread safe in the way you expect did you read: 
>
> *"This class is equivalent to 
> ArrayList 
> with 
> synchronized operations. This has a performance cost, and the 
> synchronization is not necessarily meaningful to your application: 
> synchronizing each call to get, for example, is not equivalent to 
> synchronizing on the list and iterating over it (which is probably what you 
> intended). If you do need very highly concurrent access, you should also 
> consider 
> CopyOnWriteArrayList
> . "
> *
> http://developer.android.com/reference/java/util/Vector.html 
>
> The implication of the above is that your Vector change be changed from 
> another thread whilst you are trying to serialize it.
>
>
> On Monday, July 2, 2012 8:52:46 PM UTC+1, alex b wrote: 
>>
>> I have an activity that contains a private Vector, thread safe 
>> version of ArrayList.  The activity adds items to the ArrayList, and in 
>> onSaveInstanceState() I save the data (see code below).  The problem is 
>> that it looses items and it seems to have after the GC runs.  So what am I 
>> missing?
>>
>>
>> private static RecentItems _lstRecent;
>> 
>> @Override
>> public void onCreate(Bundle savedInstanceState) {
>> 
>> super.onCreate(savedInstanceState);
>> setContentView(R.layout.main);
>> 
>>  restoreRecents(savedInstanceState);
>> }
>>
>> @Override
>> protected void onSaveInstanceState(Bundle outState){
>> super.onSaveInstanceState(outState);
>> 
>> String s=serializeIt(_lstRecent);
>> bundle.putString("lstRecent", s);
>> }
>> 
>> @Override
>> protected void onRestoreInstanceState(Bundle outState){
>> super.onSaveInstanceState(outState);
>> 
>> this.restoreRecents(outState);
>> }
>>
>> private void restoreRecents(Bundle bundle){
>>  if (bundle!=null){
>>  String s = bundle.getString("lstRecent");
>> _lstRecent=deserializeIt(s);
>> }
>>  
>> if (_lstRecent ==null)
>> _lstRecent=new RecentItems();//unt
>>
>> }
>>
>>

-- 
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

[android-developers] Re: activity looses ArrayList<> items

2012-07-03 Thread RichardC
I don't think Vector is thread safe in the way you expect did you read:

*"This class is equivalent to 
ArrayList with 
synchronized operations. This has a performance cost, and the 
synchronization is not necessarily meaningful to your application: 
synchronizing each call to get, for example, is not equivalent to 
synchronizing on the list and iterating over it (which is probably what you 
intended). If you do need very highly concurrent access, you should also 
consider 
CopyOnWriteArrayList
. "
*
http://developer.android.com/reference/java/util/Vector.html 

The implication of the above is that your Vector change be changed from 
another thread whilst you are trying to serialize it.


On Monday, July 2, 2012 8:52:46 PM UTC+1, alex b wrote:
>
> I have an activity that contains a private Vector, thread safe 
> version of ArrayList.  The activity adds items to the ArrayList, and in 
> onSaveInstanceState() I save the data (see code below).  The problem is 
> that it looses items and it seems to have after the GC runs.  So what am I 
> missing?
>
>
> private static RecentItems _lstRecent;
> 
> @Override
> public void onCreate(Bundle savedInstanceState) {
> 
> super.onCreate(savedInstanceState);
> setContentView(R.layout.main);
> 
>  restoreRecents(savedInstanceState);
> }
>
> @Override
> protected void onSaveInstanceState(Bundle outState){
> super.onSaveInstanceState(outState);
> 
> String s=serializeIt(_lstRecent);
> bundle.putString("lstRecent", s);
> }
> 
> @Override
> protected void onRestoreInstanceState(Bundle outState){
> super.onSaveInstanceState(outState);
> 
> this.restoreRecents(outState);
> }
>
> private void restoreRecents(Bundle bundle){
>  if (bundle!=null){
>  String s = bundle.getString("lstRecent");
> _lstRecent=deserializeIt(s);
> }
>  
> if (_lstRecent ==null)
> _lstRecent=new RecentItems();//unt
>
> }
>
>

-- 
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