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

приложения
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_SAVE = "save";
private static final String STATE_SAVEINFO = "saveinfo";
private static final FadeInfo NO_FADE = new FadeInfo(false, false, 0);
private static ViewActivity instance;
@ -93,7 +94,12 @@ public final class ViewActivity extends Activity implements TouchGesture.OnTouch
places = new MapPlacesES();
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 {
InputStream stream = null;
if (save != null) {
@ -147,10 +153,22 @@ public final class ViewActivity extends Activity implements TouchGesture.OnTouch
protected void onPause() {
stopMusic(NO_FADE);
stopSound(NO_FADE);
super.onPause();
}
@Override
protected void onDestroy() {
safeClearImageView(background);
spritesClear();
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
@ -490,16 +508,9 @@ public final class ViewActivity extends Activity implements TouchGesture.OnTouch
}
private void saveState() {
final long timestamp = System.currentTimeMillis();
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);
final SaveInfo info = createSave();
try {
final String filename = Long.toString(timestamp);
final String filename = Long.toString(info.getTime());
IOUtil.writeSaveInfo(getApplicationContext(), filename, info);
Toast.makeText(this, R.string.saved, Toast.LENGTH_SHORT).show();
} 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() {
@Override
public void run() {