Operator head spacing
I just looked at AndroidManifest.xml again and I noticed I
accidentally left the configuration for the service to run in a new
process each time instantiated (via android:process=:myprocessname.
I was experimenting with this at one point during another debugging
session. If it starts with a colon, a new process is given each time
and that would explain why I was getting different SharedPreferences
instances...they were different PIDs, which I did not notice at first
either.
The SharedPreferences API docs state Note: currently this class does
not support use across multiple processes. This will be added later.
So, I just removed the android:process configuration from
AndroidManifest.xml and things are working as expected.
On Apr 16, 3:39 pm, shaun shashepp...@gmail.com wrote:
Well, I tested one of the sample applications (http://code.google.com/
p/androgames-sample/) and both the Engine's and Settings'
onSharedPreferenceChanged() methods are called and with the same
instance ofSharedPreferencesobject. So, apparently something is
different in myLiveWallpaper.
I went through everything top to bottom and made some small (I'd say
very minor) tweaks to my code/config to further match the example and
still the same results - the Engine's onSharedPreferenceChanged()
method is not called while the Settings' is.
I also noticed thatSharedPreferencesinstance returned in the Engine
constructor (via prefs =
LiveWallpaperService.this.getSharedPreferences(PREFS_NAME,
0)) is a different object instance than that passed in to
onSharedPreferenceChanged() of the Settings class. Nowhere do I
create a new instance ofSharedPreferencesnor do I have any other
code related to shared preferences outside of what is being discussed
here. So, Android is serving up 2 separate instances ofSharedPreferencesfor
some reason Why?
I am boggled. Please help me think.
On Apr 16, 11:45 am, shaun shashepp...@gmail.com wrote:
I am experiencing something strange with aLiveWallpaper. I very
closely followed several examples out there onLiveWallpapers in
regards to shared preference settings (e.g. Android sample app Cube
LiveWallpaper).
The Engine implements
SharedPreferences.OnSharedPreferenceChangeListener and the pertienent
code in Engine looks like this:
public static final String PREFS_NAME = some-name;
Engine() {
prefs = LiveWallpaperService.this.getSharedPreferences(PREFS_NAME,
0);
prefs.registerOnSharedPreferenceChangeListener(this);
}
public void onSharedPreferenceChanged(SharedPreferences
sharedPreferences, String key) {
Log.e(getClass().getSimpleName(), on shared preference
changed);
}
NOTE: I never unregister the Engine instance as a shared prefs
listener. Although, I did move some things around to onCreate and
onDestroy (added the unregister there) and had no impact as far as I
could tell.
The Settings class extends PreferenceActivity and implements
SharedPreferences.OnSharedPreferenceChangeListener as well. And since
that class has little code here is the body:
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
getPreferenceManager().setSharedPreferencesName(Engine.PREFS_NAME);
addPreferencesFromResource(R.xml.settings);
getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceCha
ngeListener(this);
}
�...@override
protected void onDestroy() {
getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceC
hangeListener(this);
super.onDestroy();
}
public void onSharedPreferenceChanged(SharedPreferences
sharedPreferences, String key) {
Log.e(getClass().getSimpleName(), on shared preference
changed);
}
The only thing coming out in the log is from the Settings class for on
shared pref change. Anyone have any idea why?
In the implementations I've found forLiveWallpapershared prefs
settings, the Engine constructor either uses the shared preferences or
calls to onSharedPreferenceChanged() directly. It seems like those
other examples may be experiencing the same thing I described above,
and they worked around it!?!?
I do admit I have not taken the example code from others and tried it
out to see if the Engine onSharedPreferenceChanged() gets called. I
will do that tonight or this weekend.
--
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
athttp://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