我使用 ViewPager(offscreenPageLimit默认为 1)和 FragmentStatePagerAdapter 编写了一个阅读器应用程序,其中我有
override fun getItem(position: Int) = ComicFragment.newInstance(index = position + 1)
Run Code Online (Sandbox Code Playgroud)
这里创建了一个index可能大于2000的ComicFragment,具有这样索引的漫画将被加载到片段中。默认setRetainInstance为 false
同样在片段中,我将索引和布尔值保存transMode在savedInstanceState中,这样当用户来回滑动几页时,他们将使页面处于与原来相同的状态。它还将维护配置更改的状态。
问题是,随着每个片段从TooLargeTool中滑走,就会出现
D/TooLargeTool: ComicFragment.onSaveInstanceState wrote: Bundle126358192 contains 4 keys and measures 0.8 KB when serialized as a Parcel
* androidx.lifecycle.BundlableSavedStateRegistry.key = 0.1 KB
* transMode = 0.0 KB
* android:user_visible_hint = 0.1 KB
* android:view_state = 0.6 KB
* fragment arguments = Bundle247579945 contains 1 keys and measures 0.0 KB when serialized as …Run Code Online (Sandbox Code Playgroud) android android-viewpager fragmentstatepageradapter transactiontoolargeexception
adb shell pm grant x.y.z android.permission.PACKAGE_USAGE_STATS
这是通过 adb 授予权限的命令PACKAGE_USAGE_STATS,但只有当我从未在本机设置中切换此权限时它才有效。
同样的事情也发生在SYSTEM_ALERT_WINDOW许可上,尽管有一个更好的命令adb shell appops set x.y.z SYSTEM_ALERT_WINDOW allow可以有效地做到这一点。
问题是我没有找到另一个命令来切换PACKAGE_USAGE_STATS权限。