在我的Android应用程序中,当我旋转设备(滑出键盘)然后我Activity重新启动(onCreate被调用).现在,这可能是它应该如何,但我在onCreate方法中做了很多初始设置,所以我需要:
onCreate不会再次调用,布局只是调整或onCreate不调用.我错过了什么或者Fragment没有onRestoreInstanceState()方法吗?如果没有,我该如何获得类似的东西呢?
在我的应用程序中有一个静态变量,当我从外部浏览器返回我的应用程序时,该变量被设置为null.如果我正在启动的外部网页足够复杂,似乎应用程序或其中某些部分被杀死.
如果应用程序被完全杀死然后从主要活动中重新启动就可以了,但重新启动来自启动浏览器的活动 - 并且它并不意味着设置应用程序状态以便在访问空静态变量时崩溃.这对我来说是一个六分之一的设备问题所以我需要一些建议.
是否有设置标志以防止此行为?
关于onRestoreInstanceState和,我有几个问题onSaveInstanceState.
1)这些方法在哪里适合活动生命周期?我已经阅读了很多文档但是没有明确的想法,除了一个广泛的声明,即要保存活动的状态
2)是否onCreate和onRestoreInstanceState相互排斥?
3)onRestoreInstanceState当活动被破坏时被调用?这是什么意思?除了当另一个活动浮动在当前之上的情况之外,活动总是被销毁.
4)onRestoreInstanceState似乎只能从果冻豆中的仪器中调用.这与活动生命周期不再相关吗?
我有一个使用片段的应用程序,我正在玩如何在Activity中使用相同的片段,双窗格和Activity作为独立的.仍然不确定完成此操作的最佳方法,但我注意到FragmentManager有一个putFragment和getFragment函数.令我困惑的是,您必须为get和put函数提供Bundle作为参数.单独的活动如何拥有相同的Bundle?显然你可以将Bundle作为参数传递,但在那一点上我觉得你只是搞乱了.
那么使用getFragment和putFragment的好方法是什么?请包含Bundle参数说明.
我创建了一个自定义类RestaurantList的实例来保存我的数据(从Web服务接收的餐馆数据列表作为json数据).
我该如何保存onSaveInstanceState?
我的应用程序中有一个有趣的bug.当用户旋转屏幕时,我丢失了活动中的一些数据.任何人都知道为什么会这样?
根据我从Gmail和TED应用程序观察到的向上导航的行为,它将导航到具有相同状态(滚动位置)的父级,而不像谷歌在他们的文档中所说的实施向上导航,就像创建父意图并启动它一样.
我实现了Android示例代码中的代码,所有状态都消失了(我之前设置的所有额外参数和滚动位置).这是什么方法?我在Android文档上找不到任何内容.
以下是代码:
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
Intent upIntent = new Intent(this, MyParentActivity.class);
if (NavUtils.shouldUpRecreateTask(this, upIntent)) {
// This activity is not part of the application's task, so create a new task
// with a synthesized back stack.
TaskStackBuilder.from(this)
.addNextIntent(new Intent(this, MyGreatGrandParentActivity.class))
.addNextIntent(new Intent(this, MyGrandParentActivity.class))
.addNextIntent(upIntent)
.startActivities();
finish();
} else {
// This activity is part of the application's task, so simply
// navigate up to the hierarchical parent activity.
NavUtils.navigateUpTo(this, upIntent); …Run Code Online (Sandbox Code Playgroud) 可能重复:
如何保存Android应用程序的状态?
我有一个Android应用程序.该应用程序在一个屏幕中崩溃,应用程序退出.当我再次启动应用程序时,我需要通过检查初始活动onCreate()方法中的某些条件来启动另一个屏幕.我们可以使用首选项或SQLite来做到这一点吗?
在Apress Pro Android 4中,作者说过:
当设备旋转时,[...]当前正在运行的活动的上下文将不再有效.[...]一种方法是使用对活动的弱引用而不是硬引用[...]
但是作者只是建议这一点,并没有说明它是如何完成的.谁先做了这个,请举个例子.