Paging

Paging库是用来代替在ListView中查询的CursorAdapter和在RecyclerView中查询的AsyncListUtil的。

Paging库的主要组成:

  • DataSource:定义数据来源,可以根据实际情况继承其子类:
    • PageKeyedDataSource:使用当前Page保存的前后key来查找数据,例如使用当前保存的nextPage token。
    • ItemKeyedDataSource:使用当前项的数据获取下一项的数据,例如嵌套评论,使用前一项的id获取下一项的数据。
    • PositionalDataSource:从数据来源的任意点获取任意个数的数据。

Paging库可以搭配Room库使用,Room库可以帮我们自动生成能够获取PositionalDataSource实例的DataSource.Factory,例如:

@Query("select * from users WHERE age > :age order by name DESC, id ASC")
DataSource.Factory<Integer, User> usersOlderThan(int age);
  • PagedList:从DataSource中加载数据,可以设置一次加载多少数据,预加载多少数据。同时这个类也可以为其他类提醒更新,例如RecyclerView.Adapter

  • PagedListAdapter:这是一个RecyclerView.Adapter的实现类,用来从PagedList中获取数据。当加载了新页时,PagedListAdapter可以提醒RecyclerView进行更新。PagedListAdapter使用子线程进行新旧页数据的对比,提高效率。

  • 实时更新:传入DataSource.Factory,生成对应的LiveData或者Flowable实现自动更新:

    • LivePagedListBuilder

      LiveData<PagedList<Item>> pagedItems =
          LivePagedListBuilder(myDataSource, /* page size */ 50)
                  .setFetchExecutor(myNetworkExecutor)
                  .build();
    • RxPagedListBuilder

      Flowable<PagedList<Item>> pagedItems =
          RxPagedListBuilder(myDataSource, /* page size */ 50)
                  .setFetchScheduler(myNetworkScheduler)
                  .buildFlowable(BackpressureStrategy.LATEST);
`paging drx` 通常出现在无线通信领域,尤其是在4G/5G网络中与终端设备(UE)节能机制相关的配置参数。它涉及寻呼(Paging)机制和DRX(Discontinuous Reception,非连续接收)机制的结合使用。以下是相关内容的整理: Paging是网络侧用来通知终端有下行数据到达的机制。当终端处于空闲状态(Idle)或非激活状态(Inactive)时,为了节省功耗,终端不会一直监听下行信道,而是周期性地醒来监听寻呼信道。 DRX是一种节能机制,允许终端在没有数据传输时关闭接收器,定期醒来监听是否有数据到达。在DRX周期中,终端只在特定的时间窗口(称为On Duration)监听PDCCH信道,其余时间进入休眠状态。 Paging DRX的配置通常涉及以下参数: - **DRX Cycle**:定义了终端监听寻呼信道的周期,通常为320ms、640ms等。 - **On Duration**:终端在每个DRX周期中监听PDCCH的时间长度,单位为子帧。 - **DRX Inactivity Timer**:当终端成功解码到调度信息后,该定时器启动,终端保持监听状态,直到定时器超时。 - **DRX Retransmission Timer**:用于HARQ重传的等待时间,在DRX机制下保证数据重传不会被错过。 在5G NR中,Paging DRX的配置由RRC层通过`RRCSetup`或`RRCReconfiguration`消息下发,相关字段包括`drx-Config`,其中可能包含如下结构: ```asn1 drx-Config SEQUENCE { drx-onDurationTimer ENUMERATED {ms3, ms5, ms10, ms20, ms30, ms40, ms50, ms60, ms80, ms100, ms200}, drx-inactivityTimer ENUMERATED {ms10, ms20, ms30, ms40, ms50, ms60, ms80, ms100, ms200, ms300, ms500, ms750, ms1280, ms1920, ms2560}, drx-harq-RTT-timerDL ENUMERATED {sf0, sf1, sf2, sf3, sf4, sf5, sf6, sf7, sf8, sf9, sf10, sf11, sf12, sf13, sf14, sf15}, drx-harq-RTT-timerUL ENUMERATED {sf0, sf1, sf2, sf3, sf4, sf5, sf6, sf7, sf8, sf9, sf10, sf11, sf12, sf13, sf14, sf15}, drx-RetransmissionTimerDL ENUMERATED {sf0, sf1, sf2, sf4, sf6, sf8, sf16, sf24, sf32}, drx-RetransmissionTimerUL ENUMERATED {sf0, sf1, sf2, sf4, sf6, sf8, sf16, sf24, sf32}, drx-longCycle ENUMERATED {ms10, ms20, ms32, ms40, ms64, ms80, ms128, ms160, ms256, ms320, ms512, ms640, ms1024, ms1280, ms2048, ms2560}, drx-shortCycle ENUMERATED {ms2, ms4, ms5, ms8, ms10, ms16, ms20, ms32, ms40, ms64, ms80, ms128, ms160, ms256, ms320, ms512}, drx-shortCycleTimer ENUMERATED {s1, s2, s4, s8, s16, s32, s64, s128} } ``` 在实际网络部署中,Paging DRX的配置会影响终端的功耗和响应延迟。较短的DRX周期可以提高终端的响应速度,但会增加功耗;较长的DRX周期则有助于降低功耗,但可能导致数据传输延迟增加。 在5G中,Paging消息通过Paging Control Channel(PCCH)下发,终端根据配置的DRX参数监听PDCCH中的P-RNTI标识的寻呼消息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值