我应该使用哪种生命周期方法进行网络调用,以免在屏幕旋转时再次调用它?

Which lifecycle method should I place my network call so it doesn't get called again when the screen rotates?

我正在尝试通过在查询 API 后显示列表来学习 MVVM 架构。 我有点不确定我应该如何处理旋转我的设备的问题,因为一旦我旋转它,我的 onCreate 方法就会再次被调用,并且对 API 的第二个查询被调用。我应该在哪里放置我的网络调用,以便它在屏幕方向改变时不执行另一个查询?

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);

        viewModel = new ViewModelProvider(this).get(PostViewModel.class);

        adapter = new PostAdapter(viewModel.getListPosts());
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        recyclerView.setAdapter(adapter);

        viewModel.getGetPostsLiveData().observe(this, listPosts -> {
            Log.d(TAG, "onCreate: Called...");
            adapter.notifyDataSetChanged();
        });

        viewModel.getPosts();

    }

我的方法 viewModel.getPosts(); 执行查询并在设备屏幕方向改变时再次调用。

根据这个回答:

onPause();
onSaveInstanceState();
onStop();
onDestroy();

onCreate();
onStart();
onResume();

这是屏幕方向更改的生命周期。对于这 3 种方法,onCreate, onStart, and onResume 它们在应用程序打开时被调用一次,并在每次屏幕更改时再次被调用。所以我不确定我应该在哪里发出网络呼叫请求。

如果是一次性调用,您可以从 ViewModel 中调用它。

init {
getPosts()
}