在安卓系统中有ComponentCallbacks接口使用by活动、ActivityGroup、服务等,当活动配置发生变化时,他们会实现,并由通知他们。因此,我想创建自己的类,它实现了ComponentCallbacks侦听onConfigurationChanged并执行一些操作.所以我的课正在实施,但是..。我想我需要在注册我的班级,有人的观察者。
那么,有可能吗?在配置更改时,是否有任何方法可以“注册”我自己的类?
我想这个人可能是ActivityThread,这是collectComponentCallbacksLocked的方法。但我看不出有什么办法注册我自己的课。
ActivityThread和ComponentCallbacks使用
附注:当然,我可以重写活动的方法onConfigurationChange更改,然后调用类的onConfigurationChanged方法,但我不想。我想知道android有没有办法做到这一点。
发布于 2012-10-04 08:43:28
在"Google /O 2012 --少花钱多做:做一个好的安卓公民“(你可以在youtube上找到)中,有人解释说你可以通过调用Context.registerComponentCallbacks来做到这一点。因此,您只需让类实现ComponentCallbacks接口(或您希望的ComponentCallbacks2 ),就可以自动添加可以覆盖的方法,并从活动中添加片段。只需将实例从类中传递给它就行了。就像这样:
registerComponentCallbacks( mYourClass );应该做的工作:)
发布于 2012-10-04 00:52:49
根据@Sandra的回答,我们可以使用Context.registerComponentCallbacks在系统中注册自己的组件回调,并按如下方式使用:
context.registerComponentCallbacks(new ComponentCallbacks() {
@Override
public void onLowMemory() {
// make some operations when system memory is low
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
// make some operations when configuration has been changed
}
});当系统配置更改/在低内存上时,将调用所有已注册回调。
方法registerComponentCallbacks可从API级别14.检查它如何工作这里。
发布于 2012-07-01 12:16:55
您想要做的是注册一个BroadcastReceiver来接收这个播报意图:
Intent.ACTION_CONFIGURATION_CHANGED
该事件在配置更改时由系统广播。
https://stackoverflow.com/questions/11275738
复制相似问题