【发布时间】:2019-03-28 03:07:51
【问题描述】:
我有两个活动,我的MainActivity 和另一个名为DetailActivity 的活动。当应用程序首次启动时,它会打开 MainActivity 并在那里绑定 DataService 并调用以获取一些数据并填充列表视图。
从该列表视图中,用户有一个按钮可以为列表中的每个项目打开所谓的详细视图。打开该详细视图意味着开始第二个活动 (DetailActivity)。
这样做是这样的:
final Intent intent = new Intent(getContext(), DetailActivity.class);
intent.putExtra("data", dto);
getContext().startActivity(intent);
当第二个打开时,用户可以通过使用后退按钮(Android 上的主页按钮左侧)或单击标题中的后退箭头来返回。
除了当用户返回MainActivityDataService 再次绑定并调用获取数据并更新列表之外,一切都按预期工作。因此,如果用户位于项目编号的某个位置。 205 他会回到起始项目。
当用户返回它没有刷新时,有没有办法保存MainActivity 的数据或状态?
服务是这样绑定的
@Override
protected void onStart() {
super.onStart();
bind(DataService.class);
}
@Override
protected void onDestroy() {
super.onDestroy();
unbindService(connection);
}
private void bind(final Class... toBind) {
for (final Class clazz : toBind) {
bindService(new Intent(this, clazz), connection, BIND_AUTO_CREATE);
}
}
private ServiceConnection connection = new ServiceConnection() {
@Override
public void onServiceConnected(final ComponentName name, final IBinder service) {
if (service instanceof DataService.LocalBinder) {
dataService = ((DataService.LocalBinder) service).getInstance();
dataService.readData();
}
}
@Override
public void onServiceDisconnected(final ComponentName name) {
// Empty By Default
}
};
【问题讨论】:
-
是的,对不起,英语不是我的第一语言。我使用了自动更正。
-
你必须在 Parent Activity 中使用 savedinstancestate 来控制行为
标签: java android android-activity android-service android-service-binding