我的MainActivity
有两项活动,另外一项名为DetailActivity
。首次启动应用程序时,它将打开MainActivity
,并在其中绑定DataService
并进行调用以获取一些数据并填充列表视图。
在该列表视图中,用户可以打开一个按钮,以查看列表中每个项目的详细视图。打开该详细信息视图意味着开始第二个活动(DetailActivity
)。
它是这样完成的:
final Intent intent = new Intent(getContext(), DetailActivity.class);
intent.putExtra("data", dto);
getContext().startActivity(intent);
打开第二个按钮后,用户可以通过使用后退按钮(在Android上为主页按钮的左键)或单击标题中的后退箭头来返回。
一切正常,除了用户再次回到MainActivity
DataService
并绑定调用并获取数据并更新列表之外,其他所有操作均如此。因此,如果用户在项目编号的某个地方。 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
}
};
答案 0 :(得分:0)
您可以通过将服务绑定到A1: text1-text2-text3
B1: text1-text2 (-text3 has been removed by the formula)
而不是onCreate()
中来实现。
您还应该查看生命周期的对称性。当前,您在开始时绑定,而在destroy中取消绑定。如果您绑定onStart()
,则可能应该取消绑定onStart
。将绑定移至onStop
时,可以将取消绑定保留在onCreate
说明:首先创建活动时将调用onDestroy
。每当您的活动可见时,就会调用onCreate()
。
答案 1 :(得分:0)
设法解决了这个问题
@Override
public boolean onSupportNavigateUp() {
onBackPressed(); // one inherited from android.support.v4.app.FragmentActivity
return false;
}
以这种方式进行操作很有用。我会回到我离开的地方,因为一切都已经存在,所以不需要加载任何数据