首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果状态是由我的类组成的,如何在Android中保存方向更改期间的状态?

如果状态是由我的类组成的,如何在Android中保存方向更改期间的状态?
EN

Stack Overflow用户
提问于 2010-10-12 22:55:51
回答 3查看 92.2K关注 0票数 56

我正在研究Android如何处理我的应用程序的方向改变(我发现它在方向改变时重新启动了主活动。我已经看到,您可以重写该方法

代码语言:javascript
运行
复制
protected void onSaveInstanceState(Bundle outState)

要保存内容,请使用in onStart。问题是我有一个带有自定义对象的视图和一个使用自定义适配器的列表视图。所有的东西都在这些对象的ArrayList中,但是我注意到你不能把任意的对象放在这个包中!那么我如何保存状态呢?

EN

Stack Overflow用户

发布于 2019-06-26 15:41:12

对于简单的数据,该活动可以使用onSaveInstanceState()方法并从onCreate()中的包中恢复其数据,但这种方法只适用于可以序列化然后反序列化的少量数据,而不适用于潜在的大量数据,如用户列表或位图。

代码语言:javascript
运行
复制
The ViewModel class allows data to survive configuration changes such as screen rotations.
Architecture Components provides ViewModel helper class for the UI controller that is responsible for preparing data for the UI.

**Example**:

如果您需要在应用程序中显示用户列表,请确保分配职责以获取用户列表并将其保存到ViewModel,而不是activity或片段,如以下示例代码所示。

代码语言:javascript
运行
复制
public class MyViewModel extends ViewModel {
    private MutableLiveData<List<User>> users;
    public LiveData<List<User>> getUsers() {
        if (users == null) {
            users = new MutableLiveData<List<User>>();
            loadUsers();
        }
        return users;
    }

    private void loadUsers() {
        // Do an asynchronous operation to fetch users.
    }
}

public class MyActivity extends AppCompatActivity {
    public void onCreate(Bundle savedInstanceState) {
        // Create a ViewModel the first time the system calls an activity's onCreate() method.
        // Re-created activities receive the same MyViewModel instance created by the first activity.

        MyViewModel model = ViewModelProviders.of(this).get(MyViewModel.class);
        model.getUsers().observe(this, users -> {
            // update UI
        });
    }
}
票数 2
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3915952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档