Исправлено восстановление состояния после блокировки/сворачивания

приложения
This commit is contained in:
Victor 2015-05-03 15:15:14 +03:00
parent 722ef1a719
commit 0b5ba76a9f

View File

@ -37,6 +37,7 @@ public final class ViewActivity extends Activity implements TouchGesture.OnTouch
public static final String EXTRA_NAME = "name"; public static final String EXTRA_NAME = "name";
public static final String EXTRA_SAVE = "save"; public static final String EXTRA_SAVE = "save";
private static final String STATE_SAVEINFO = "saveinfo";
private static final FadeInfo NO_FADE = new FadeInfo(false, false, 0); private static final FadeInfo NO_FADE = new FadeInfo(false, false, 0);
private static ViewActivity instance; private static ViewActivity instance;
@ -93,7 +94,12 @@ public final class ViewActivity extends Activity implements TouchGesture.OnTouch
places = new MapPlacesES(); places = new MapPlacesES();
final Intent intent = getIntent(); final Intent intent = getIntent();
final SaveInfo save = intent.getParcelableExtra(EXTRA_SAVE); final SaveInfo save;
if (savedInstanceState != null) {
save = savedInstanceState.getParcelable(STATE_SAVEINFO);
} else {
save = intent.getParcelableExtra(EXTRA_SAVE);
}
try { try {
InputStream stream = null; InputStream stream = null;
if (save != null) { if (save != null) {
@ -147,10 +153,22 @@ public final class ViewActivity extends Activity implements TouchGesture.OnTouch
protected void onPause() { protected void onPause() {
stopMusic(NO_FADE); stopMusic(NO_FADE);
stopSound(NO_FADE); stopSound(NO_FADE);
super.onPause();
}
@Override
protected void onDestroy() {
safeClearImageView(background); safeClearImageView(background);
spritesClear(); spritesClear();
Parser.release(); Parser.release();
super.onPause(); super.onDestroy();
}
@Override
protected void onSaveInstanceState(Bundle outState) {
final SaveInfo info = createSave();
outState.putParcelable(STATE_SAVEINFO, info);
super.onSaveInstanceState(outState);
} }
@Override @Override
@ -490,16 +508,9 @@ public final class ViewActivity extends Activity implements TouchGesture.OnTouch
} }
private void saveState() { private void saveState() {
final long timestamp = System.currentTimeMillis(); final SaveInfo info = createSave();
final SaveInfo info = new SaveInfo();
info.setPath(scriptPath);
info.setPosition(Parser.getInstance().getLastPosition());
info.setTime(timestamp);
info.setVariables(Variables.getVariables());
info.setBackgroundType(backgroundType);
info.setBackgroundName(backgroundName);
try { try {
final String filename = Long.toString(timestamp); final String filename = Long.toString(info.getTime());
IOUtil.writeSaveInfo(getApplicationContext(), filename, info); IOUtil.writeSaveInfo(getApplicationContext(), filename, info);
Toast.makeText(this, R.string.saved, Toast.LENGTH_SHORT).show(); Toast.makeText(this, R.string.saved, Toast.LENGTH_SHORT).show();
} catch (IOException ioe) { } catch (IOException ioe) {
@ -507,6 +518,17 @@ public final class ViewActivity extends Activity implements TouchGesture.OnTouch
} }
} }
private SaveInfo createSave() {
final SaveInfo info = new SaveInfo();
info.setPath(scriptPath);
info.setPosition(Parser.getInstance().getLastPosition());
info.setTime(System.currentTimeMillis());
info.setVariables(Variables.getVariables());
info.setBackgroundType(backgroundType);
info.setBackgroundName(backgroundName);
return info;
}
private final Runnable nextCommandRunnable = new Runnable() { private final Runnable nextCommandRunnable = new Runnable() {
@Override @Override
public void run() { public void run() {