Android:如何根据SharedReferences值处理大量UI元素的变化

Android:如何根据SharedReferences值处理大量UI元素的变化,android,android-activity,android-sharedpreferences,Android,Android Activity,Android Sharedpreferences,简介: 我已经为我的应用程序创建了自定义设置,所有设置的数据都取决于SharedReference。 基本上,我有一些开关(确切地说是7个)和微调器,还有文本视图,在活动启动时,我从SharedReferences中获取值,这些引用可以是布尔、int或字符串。 我已经创建了复杂的逻辑,我不想切换到首选项活动 之前: 我有一个关于viewpager和TabLayout的活动,活动启动时有很长的延迟 基本上,过去的情况是:用户点击按钮启动设置,他必须在MainActivity冻结的情况下等待至少3秒

简介: 我已经为我的应用程序创建了自定义设置,所有设置的数据都取决于SharedReference。 基本上,我有一些开关(确切地说是7个)和微调器,还有文本视图,在活动启动时,我从SharedReferences中获取值,这些引用可以是布尔、int或字符串。 我已经创建了复杂的逻辑,我不想切换到首选项活动

之前: 我有一个关于viewpager和TabLayout的活动,活动启动时有很长的延迟

基本上,过去的情况是:用户点击按钮启动设置,他必须在MainActivity冻结的情况下等待至少3秒(有时甚至5秒),然后启动设置

当前: 因此,我将片段转换为活动,并尝试使用NavigationDrawer在3个活动之间切换,而不是在3个选项卡之间切换

我用NavigationDrawer创建了一个基本活动,并将其从其他3个活动中扩展出来,以便它们都使用相同的NavigationDrawer

基本上现在点击按钮,我启动第一个活动,它会立即启动,但仍然有2秒的延迟,它会一直显示白色屏幕,然后会加载设置了开关、文本视图和微调器值的内容

我试过使用碎片,但用另一个碎片替换碎片时会出现延迟,而且加载时间相同

设置的工作原理: 一个微调器取决于其他微调器的状态(启用/禁用、打开/关闭)。创建活动时,我必须从SharedReference(例如值为true的布尔值)获取值,并打开第一个开关,该开关将启用所有其他开关,并应更新一些共享首选项值。 所有这些都发生在活动的onCreate中,因此延迟显然是合理的

我的问题:

我做得对吗,还是应该使用一些背景任务

我应该如何减少装载时间(如果可能)

是否有其他方法可以在别处获取这些值,然后当活动启动时,我会立即调用这些值并显示内容


编辑:很遗憾,我没有演示代码。我试着在我的帖子中解释所有的内容,或多或少地让大家知道我做了什么。

没有代码就没什么可做的了。但是获取和更新共享的首选项不应该花费太多的时间——试着找到繁重的工作并进行优化。我的猜测是,这与你的观点有关,而不是与大家分享preferences@X3Btel既然您提到了视图,我想添加另一个细节,我已经添加了ImageView,它们很多。。我使用它们作为图标。也许这就是造成这次延误的原因。我会尽量在没有他们的情况下看到。。。谢谢你的意见