如何在没有数据重复的情况下使用Intentservice更新recyclerview

时间:2018-01-29 12:47:10

标签: android intentservice

我有一个recyclerview使用Intentservice获取带有http请求的数据。我有一个按钮来更新我的recylcerview适配器。当我按下此按钮数据更新,它似乎没问题。但是,当我按下此按钮并更改屏幕方向时,再循环播放器视图中的行数会翻倍。

我在我的manefest中有这个:

        <activity android:name=".MainActivity"
        android:configChanges="orientation|screenSize">

所以看起来android不应该创建一个改变方向的新活动,而且当我只是在不按下更新按钮的情况下改变方向时他就不会这样做。有人对此有所了解吗?感谢。

3 个答案:

答案 0 :(得分:0)

在首次添加数据之前,请先清除列表。这样它也可以帮助你回到同一页面。

答案 1 :(得分:0)

方向改变时会发生什么

定位的生命周期

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

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

使用此

android:configChanges="keyboardHidden|orientation|screenSize"
  

警告:从Android 3.2(API级别13)开始,当设备在纵向和横向之间切换时,“屏幕尺寸”也会发生变化。因此,如果要在开发API级别13或更高级别(由minSdkVersion和targetSdkVersion属性声明)时由于方向更改而阻止运行时重新启动,则除了“orientation”值之外,还必须包含“screenSize”值。也就是说,你必须decalare android:configChanges =“orientation | screenSize”。但是,如果您的应用程序的目标是API级别12或更低,那么您的活动始终会自行处理此配置更改(即使在Android 3.2或更高版本的设备上运行,此配置更改也不会重新启动您的活动。)

http://developer.android.com/guide/topics/resources/runtime-changes.html

如果您需要更多帮助,请发布您的活动代码。很乐意提供帮助。

答案 2 :(得分:0)

每当找到新数据时,请检查旧数据。

如果列表中没有新数据,请插入。 如果列表中有新数据,那么,  检查数据是否相同:无所事事  如果数据不同:使用新数据更新旧数据并通知recyclerview itemupdated

您需要指定需要更新哪些数据,哪些数据不需要。应用你的逻辑进行比较。