我可以看到我如何保存简单整数和wot-not之类的东西,但是,例如,如果我的主要活动是与服务通信,我将在类成员中创建一个我创建的Handler实例。如何保存这样的复杂对象呢?如何与我的服务取得联系? (可能这个问题的内容证明我确实很困惑,但我希望有人能够幽默我: - )。
显然我需要让我的困惑更加清晰。我们来试试吧。我有一个班级成员 像这样初始化:
private final Handler mHandler = new Handler() {...yadda, yadda};
我已将它传递给使用它将服务发送回主要活动的服务。当我(例如)旋转屏幕时,在我的活动中是什么会使相同的处理程序实例存在?
同样适用于来自
的mTalkService类成员new AardTalkerService(this, mHandler);
这是服务本身,是什么让我可以在之后使用mTalkService 保存/恢复状态?
答案 0 :(得分:0)
将其设为类字段并在OnCreate()方法中初始化,这样您几乎可以在应用程序的任何位置使用它。
答案 1 :(得分:0)
不要直接访问Activity
类成员,因为它会被杀死并经常重新创建,以保证您的应用最终会崩溃和烧毁。
您可以使用广播接收器或Observable/Observer
模式,Activity
在Observer
中注册onRestore()
并在onPause()
注册,以确保无人尝试向死亡Activity
发送更新。
答案 2 :(得分:0)
非常酷的方式(它真的取决于'酷'对你意味着什么;))这样做是为了创建一个继承自android.app.Application的类并在那里添加你的字段。因此,当您从应用程序的任何位置请求上下文时,您将获得此类的实例,并且您可以访问您的字段。
(注意:::您需要在清单中注册自定义实现才能实现此目的。)
否则,如果您想要它简单,快速和脏,只需要一个静态类,有一个静态字段,并从您的服务和活动中访问它。 (留意线程同步问题)
如果您的服务和活动在同一个进程上运行,您可以使用自定义界面,该界面可以从您的活动中订阅一个简单的回调,而不是遇到处理程序的麻烦。