Bos*_*one 9 android android-activity android-activitymanager
我有3个不同的活动,用户之间没有特定的顺序导航.我的目标是双重的:
我认为问题不是开始/停止 - 我几乎得到了我需要的东西,但是onCreate()如果app被终止了.在这种情况下 - 它选择我在清单中配置的Activity.我想我可以在onCreate()默认活动的方法中加入一些东西,但是有更好的方法可能会让我失踪吗?
如果您的应用程序尚未"终止",那么#1应该已经工作,而#2只需要将任何未自动管理的值保存到onSaveInstanceState()中的Bundle中, 然后在onRestoreInstanceState()中恢复它们.
这是一种破解,但我认为在应用程序实际被终止的情况下,#1的最佳选择是在每个Activity类的onResume中保存最新的Activity,然后在第一次运行onCreate时你的第一个活动做了检查然后开始正确的活动...甚至可能在开始时放入一个空白的活动.像这样的东西:
StartActivity:
public class StartActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// get last open Activity
String lastActivity = PreferenceManager.getDefaultSharedPreferences(this).getString("last_activity", "");
if (last_activity == MyActivity2.getSimpleName()) {
startActivityForResult(new Intent(this, MyActivity2.class));
} else if (last_activity == MyActivity3.getSimpleName()) {
startActivityForResult(new Intent(this, MyActivity3.class));
} else {
// assume default activity
startActivityForResult(new Intent(this, MyActivity1.class));
}
}
public void onActivityResult() {
// kill the activity if they go "back" to here
finish();
}
}
Run Code Online (Sandbox Code Playgroud)
然后在所有其他活动(MyActivity1,2,3)中保存这样的值:
@Override
public void onResume() {
Editor e = PreferenceManager.getDefaultSharedPreferences(this).edit();
e.putString("last_activity", getClass().getSimpleName());
e.commit();
super.onResume();
}
Run Code Online (Sandbox Code Playgroud)
您还必须手动处理为每个活动保存/恢复数据.您可以将所需的所有值保存到每个活动的onPause()内的首选项中,然后在onResume()中将其恢复.
| 归档时间: |
|
| 查看次数: |
19544 次 |
| 最近记录: |