跨Android活动共享状态
我在不同活动之间传递状态数据时遇到问题。现在我有四个:跨Android活动共享状态,android,android-intent,android-activity,Android,Android Intent,Android Activity,我在不同活动之间传递状态数据时遇到问题。现在我有四个: 活动(一个大的onActivityResult方法)之间的坐标,没有真正的UI(只有一个空白布局) B添加一些数据(字符串) C添加一些数据(拍照) D显示上传前对数据的检查,状态在上传后删除 首先,我将此工作流的状态存储在活动A的实例变量中,但大多数情况下,Android在从B返回时会对A进行垃圾收集(可能是因为方向发生了变化),因此我会收到空指针异常。然后我尝试将状态存储在一个可打包对象中,该对象是在B返回a并产生结果时创建的,然后
- 活动(一个大的onActivityResult方法)之间的坐标,没有真正的UI(只有一个空白布局)
- B添加一些数据(字符串)
- C添加一些数据(拍照)
- D显示上传前对数据的检查,状态在上传后删除
- 将意图与标记\活动\转发\结果一起使用,并将活动链接在一起,如中所述
- 使用服务管理状态
- 从目前我桌上的情况来看:使用片段存储状态(使用setRetainInstance方法)
- 扩展android.app.Application以管理状态
- 将状态存储在SharedReferences中(但我在哪里执行内务管理?)
我是Android开发新手。。。我可能迟早都会让所有这些问题都得到解决,但对于我的情况,什么是合适的解决方案呢?你应该更加注意。在你的情况下,这将是足够的使用在你的工作。服务和SharedReference绝对不是您想要的。对于非常复杂或庞大的数据,扩展应用程序是一个很好的选择,但这与您的情况不同。您可以使用
android.app.Application class
在您的应用程序中,它是应用程序级类,通过在menifest.xml文件中配置自动创建。
您可以通过以下方式访问活动中的此类:
getApplication();
您可以在这个类中以及从一个活动中设置应用程序级数据,并在另一个活动中使用它我正要键入“但是我已经在使用附加程序了!”但是我在代码中又遇到了一个好运气,注意到我在活动中使用getIntent().getParcelableExtra()作为onActivityResult(int-requestCode,int-resultCode,Intent-Intent-Intent)方法,而不是intent.getParcelableExtra()。难怪我让NPE——为了更好的衡量,我将“意图”改为“结果元素”: