Здравствуйте, нужна ваша помощь. Весь день промаялся с сохранением настроек. В данном коде пытаюсь сохранить значение rad, но оно меняется только при перезапуске программы. Колдовал с методом onVisibilityChanged но так ничего и не получилось. Подскажите пожалуйста что делать, вот код:
public class LiveWallpaperService extends WallpaperService {
public static final String PREFERENCES = "MyPreferences";
public static final String PREFERENCE_RADIUS = "preference_radius";
private int rad;
@Override
public Engine onCreateEngine() {
return new SampleEngine();
}
@Override
public void onCreate() {
super.onCreate();
}
@Override
public void onDestroy() {
super.onDestroy();
}
public class SampleEngine extends Engine implements SharedPreferences.OnSharedPreferenceChangeListener {
private LiveWallpaperPaintings painting;
private SharedPreferences prefs;
SampleEngine() {
SurfaceHolder holder = getSurfaceHolder();
prefs = LiveWallpaperService.this.getSharedPreferences(PREFERENCES, 0);
prefs.registerOnSharedPreferenceChangeListener(this);
onSharedPreferenceChanged(prefs, null);
painting = new LiveWallpaperPaintings(holder, getApplicationContext(),
rad);
}
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
rad = Integer.parseInt(prefs.getString(PREFERENCE_RADIUS, "10"));
}
@Override
public void onCreate(SurfaceHolder surfaceHolder) {
super.onCreate(surfaceHolder);
setTouchEventsEnabled(true);
}
@Override
public void onDestroy() {
super.onDestroy();
painting.stopPainting();
}
@Override
public void onSurfaceChanged(SurfaceHolder holder, int format, int width, int height) {
super.onSurfaceChanged(holder, format, width, height);
painting.setSurfaceSize(width, height);
}
@Override
public void onSurfaceCreated(SurfaceHolder holder) {
super.onSurfaceCreated(holder);
painting.start();
}
@Override
public void onVisibilityChanged(boolean visible) {
if (visible) {
painting.resumePainting();
} else {
painting.pausePainting();
}
}
@Override
public void onSurfaceDestroyed(SurfaceHolder holder) {
super.onSurfaceDestroyed(holder);
boolean retry = true;
painting.stopPainting();
while (retry) {
try {
painting.join();
retry = false;
} catch (InterruptedException e) {}
}
}
@Override
public void onTouchEvent(MotionEvent event) {
super.onTouchEvent(event);
painting.doTouchEvent(event);
}
}
}
Сохранение настроек
Re: Сохранение настроек
В коде, вижу, что вы читает настройку в методе onSharedPreferenceChanged. А куда хотите сохранить?OctahedroN писал(а):Здравствуйте, нужна ваша помощь. Весь день промаялся с сохранением настроек. В данном коде пытаюсь сохранить значение rad, но оно меняется только при перезапуске программы. Колдовал с методом onVisibilityChanged но так ничего и не получилось.
-
- Сообщения: 18
- Зарегистрирован: 15 фев 2012, 20:14
Re: Сохранение настроек
Разобрался с проблемой, сделал отдельный метод в классе LiveWallpaperPaintings для передачи значений настроек, и сами значения передаю в методе onVisibilityChanged.