当我的活动开始时,我启动一个获取数据然后将其发送回活动的服务,以便它可以更新UI。
如果发生配置更改:
onSaveInstanceState
方法中。所以我的onSaveInstanceState
目前看起来像这样:
@Override
public void onSaveInstanceState (Bundle outState) {
if (data != null) {
outState.putSerializable(DATA_IN_BUNDLE, data);
}
// Stop any data fetching that may be going on.
stopService(new Intent(this, FetchService.class));
}
但是,我注意到这个方法是在活动正常开始时调用的,我不知道发生了什么,所以当它运行时,服务总是被取消。
所以我的问题是:
onSaveInstanceState
的任何地方。onConfigurationChanged
?谢谢!
答案 0 :(得分:1)
您有几个选择:
不允许Android杀死并重新启动Activity
。自己管理配置更改。通常这很简单,可以防止你不得不处理停止和重新启动背景的事情。
将ServiceConnection
(或您正在使用的任何通信渠道用于Service
)从旧Activity
实例传递到新Activity
实例使用onRetainNonConfigurationInstance()
和getLastNonConfigurationInstance()
使用服务总线架构,以便一个Activity
可以启动某个内容而另一个Activity
可以注册回调。
使用广播Service
将Activity
的回复发送到Intent
,在配置更改后,新的Activity
可以看到该回复。< / p>