旋转应用程序时如何存储当前滚动位置?

时间:2017-01-15 05:18:54

标签: android scroll rotation savestate appcompatactivity

我正在制作一个漫画应用程序,但当用户旋转设备(横向为纵向或纵向为横向)时,我坚持使用保存当前滚动位置。我正在使用RecyclerView和GridLayoutManager。这是我在互联网上研究的两个分组代码:

@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
    rvItems.getLayoutManager().scrollToPosition(savedInstanceState.getInt("position"));
}

@Override
protected void onSaveInstanceState(Bundle outState) {
    outState.putInt("position", ((GridLayoutManager)rvItems.getLayoutManager()).findFirstCompletelyVisibleItemPosition());
    super.onSaveInstanceState(outState);
}

我正在onResume()onPause()中使用它,但它们都不起作用。所以我要求任何想法或建议来解决我的问题?任何评论都是适当的。

P / S:还有一个问题,是否有任何解决方案可以在用户旋转屏幕时停止加载当前活动中的所有资源/数据?我的意思是在我的应用程序中,可能有大量数据和资源,无论是文本还是图像,据我所知,每次用户旋转屏幕时,调用函数onCreate()onDestroy(),其中onCreate()Jog中的每个数据都在{{ 1}}函数将再次加载。我需要资源/数据自打开以来只加载一次,然后在用户旋转屏幕时不会加载资源。

我的写作可能非常糟糕,但现在我在没有任何我能想到或在互联网上搜索的解决方案时会遇到很多问题。

感谢阅读!

1 个答案:

答案 0 :(得分:0)

将其添加到清单

中的活动代码中
android:configChanges="orientation"