當前位置:首頁 » 文件管理 » fragment緩存

fragment緩存

發布時間: 2024-10-24 08:00:14

『壹』 Android Fragment怎麼強制銷毀

具體方法如下:
一,可以銷毀的。創建fragment時,需要配置adapter,adapter繼承FragmentStatePagerAdapter 在此類中有重寫destroyItem,可以控制要銷毀哪些fragment了。
二,如果用的是tabhost + viewpager ,viewpager 默認就緩存了顯示頁的一前一後。就算是setOffscreenPageLimit(0)設置成0的話即是懶載入,但是默認的support-v4包會把默認值改為1的,也就是至少默認會載入下一頁,要想完全不載入,只有修改support-v4的源碼,然後重新打jar包調用了。

『貳』 淺淺地優化下視頻流播放體驗

作者:唐子玄

本文將解決以下問題:如何播放單個視頻?如何將播放器模塊化?如何實現視頻流?如何優化視頻播放內存?如何優化視頻流播放體驗?

播放視頻ExoPlayer 基本使用

市場上有名的播放器有:ExoPlayer、ijkplayer、GSYVideoPlayer,其中ExoPlayer體積最小且GitHub更新頻繁,故選用。

ExoPlayer播放視頻僅需6行代碼,styledPlayerView需在xml中定義。

若想不重復下載已播放視頻,需開啟文件緩存。

若需自定義緩沖參數,可實現。

若想監聽播放器狀態,可設置監聽器。

若要播放m3u8視頻,需添加依賴並使用特定代碼。

視頻格式選擇

糾結於mp4和m3u8,最終選擇m3u8,原因在於m3u8更適合分段式流媒體。

播放器封裝

定義介面,屏蔽播放器實現差異,便於上層操作。

介面中包含播放狀態的抽象。

ExoPlayer實現此介面,作為單獨庫player-exo。

在player-pseudo中定義構建VideoPlayer的抽象行為。

player-exo中基於ExoPlayer實現。

player-manager作為業務層使用播放器的入口,依賴player-pseudo。

通過gradle實現依賴倒置,上層不依賴下層具體實現,中間層作為抽象層。

視頻流

解決單個視頻播放問題後,介紹構建視頻流。

視頻流如抖音縱向列表,每個表項為全屏視頻。

使用ViewPager2+Fragment實現。

Fragment實現代碼。

在FragmentStateAdapter中構建Fragment實例。

為業務界面的ViewPager2設置適配器。

完成簡單視頻流。

預載入及其原理

使用ViewPager2.offscreenPageLimit實現預載入,設置參數後,視窗大小擴大,載入即將進入視窗的視頻。

若設置參數為1,則視窗上下各擴大一格,當前屏幕停留的視頻旁,下一個視頻已被預載入。

ViewPager2基於RecyclerView實現,內部自定義LinearLayoutManager。

額外布局空間由calculateExtraLayoutSpace方法計算並用於載入更多表項。

有限的解碼資源

使用上述代碼實現視頻流,不斷下翻視頻時,會載入不出來,因無法創建音軌。

手機音軌資源有限,每次構建ExoPlayer實例都會重新申請資源。

在Fragment生命周期方法onDestroy()中調用release()釋放播放器資源。

播放器生命周期控制

本以為視頻滑動時,播放器構建及回收時機為表項移入視窗構建,移出視窗銷毀。

ViewPager2內部機制不同,會緩存比預期更多的Fragment。

修改ViewPager2源碼,調整FragmentStateAdapter,使得播放器生命周期不再基於Fragment生命周期,改為基於視圖滾動。

播放器數量控制

使用播放器池管理播放器實例數量,避免內存抖動。

重構介面,視圖和播放器分離,播放器池通過循環數組復用。

播放器池長度需大於視窗大小,防止播放器實例復用失敗。

滑動體驗

復用播放器實例提升滑動流暢度,滑動動畫通過調整插值器改進。

無縫播放體驗

在鬆手時暫停上一個視頻,播放下一個視頻,避免視覺卡頓。

『叄』 c#如何使用緩存提高程序效率

緩存的技術應用應該是非廣泛的。而它的作用也是為了提高系統或者網站的執行效率。下面是四種常見的緩存技術:
一.OutputCaching
由於IIS的一些特性,默認情況下OutputCache是打開的,但是要對某些請求進行緩存,還需要開發者進行定製,而且默認情況下,Output Cache 會被緩存到硬碟上,我們可以通過修改DiskCacheable的屬性來設置其是否緩存,還可以通過Web config里配置緩存文件的大小。

<%@ OutputCacheDuration="3600" VaryByParam="state" DiskCacheable="true" %>
一般用硬碟緩存是考慮到頁面送顯的數據比較大,相對內存緩存來說,它的容量大,但是訪問速度慢點,如果把周期設太短,使用硬碟緩存的效率就不大好。對於Output Cache的定製,有兩種方法,一種是基於底層的API技術,一種是基於高層的@OutputCaching:

1.基於高層的@OutputCaching

A.由參數改變緩存內容:有些時候我們需要根據用戶的請求來生成頁面,但是用戶的請求只有有限的幾種組合,這個時候就可以根據用戶請求來生成幾種緩存頁面,來進行緩存。

<%@ OutputCache Duration ="60" VaryByParam = "state" %>
<asp:sqlDataSourceID="SqlDataSource1" runat="server">
<SelectParameters>
<asp:QueryStringParameter Name="state"QueryStringField="state" DefaultValue="CA" />
</SelectParameters>
</asp:SqlDataSource>
B.回調緩存:可以針對每個請求在頁面中插入動態的部分,以彌補單獨使用靜態緩存的不足:
動態的部分用Substitution控制項,Substitution控制項是一個容器

<asp:SubstitutionID="Substitution1" runat="server" MethodName =""/>
MethodName 裡面放入要調用的方法內容。
2. 使用API定製緩存:
通過設置System.Web.HttpCachePolicy屬性來進行配置

<%@ OutputCache Duration="60"VaryByParam="none" %>
就可以寫成

Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetCacheability(HttpCacheability.Public);

二.FragmentCaching
作為Output的緩存的附加功能,還提供一種緩存技術,專門用於緩存用戶控制項。在用戶控制項中設置:

<%@ OutputCache Duration="60"VaryByParam="none" %>

但在引用用戶控制項的頁面不設置緩存。這樣的話,頁面中除了用戶控制項是靜態的,其他都是動態的。
緩存用戶空間同樣還可以使用控制項作為參數來源。通過指定控制項作為緩存控制項的數據來源,可以達到緩存控制項數據的目的,和上面一樣。

三.DataCaching
Asp.net提供了一種非常快捷的方法進行資料庫緩存,用戶可以非常簡單方便的對頁面變數進行緩存。並以此提高程序效率。一個頁面變數的緩存生命周期與應用程序的緩存生命周期相同
實現是把數據放在Cache中,如:

source = new DataView(ds);
Cache("MyCache") = source;

MyCache這個變數其實就是一個XML文件。

四.SQL Caching
通過配置資料庫連接池,只有當資料庫數據被改變的時候,緩存才會改變。
開個DOS窗口:
C:\>dir aspnet_regsql.exe/s ——這個文件是專門注冊SQL連接池的,它對SQLSever 7.0以上都有專門的支持,我們通過寫一些專門的語句來配置這個注冊連接池,可以把連接池和本地的應用程序(Asp.net伺服器,即IIS)做一個連接。連接池只能監視有限的幾個庫,不然連接池的負載太大。使用SQL Caching:
先注冊,如: aspnet_regsql.exe-S".\SQLExpress"-E-d"pubs"-ed
aspnet_regsql.exe-S".\SQLExpress"-E-d"pubs"-et-t"authors"
其中:- S".\SQLExpress" 表示要使用的SQL Server實例為".\SQLExpress"。-E 表示使用當前windows憑證進行身份驗證。-d"pubs"表示用於應用程序服務的資料庫名稱叫"pubs"。-ed表示為SQL 緩存依賴項啟用資料庫。-et 表示為SQL 緩存依賴項啟用表。-t"authors"表的名稱為"authors"。
然後頁面上:
<%@ OutputCacheDuration="99999999" VaryByParam="none"SqlDependency="Pubs.Authors" %>
就OK了。

『肆』 交換機的三種數據傳輸方式之間的區別

首先交換機有Cut through、Store and forward和fragment free三種傳輸方式。

(以下為三種數據傳輸方式對比)

1、Cut through傳輸方式接收到目的地址後即轉發出去。這種方式延時小,但損壞的數據一樣轉發。

2、Store-and-forward傳輸方式接收到完整的數據包後,校驗好壞,好的轉發,壞的丟棄重發。這種方式傳輸可靠,但其延時較長。

3、Fragment free傳輸方式接收到數據包後,大於64bytes的轉發,小於64bytes的丟棄。這種方式好壞介於上述兩種方式之間。

(4)fragment緩存擴展閱讀:

三種傳輸方式優缺點:

一、直通式(Cut Through):

1、當輸入埠檢測到一個數據包時,就檢查該包的包頭,根據包內的目的地址把數據包直通到相應埠。

2、優點:這種方式不需要等數據包接收完就開始轉發,交換速度快,延遲非常小。

3、缺點:不提供錯誤檢測服務,有可能將出錯的數據包轉發出去。也不提供緩存,不能將速率不同的埠直接接通,而且容易丟包。

二、存儲轉發式(Store and Forward):

1、這種方式先將數據包完整的接收下來,經過CRC檢查,如果數據包沒有錯誤,再根據地址進行轉發。

2、優點:提供錯誤檢測服務,改善了網路性能。支持速度不同的埠的轉發服務,可以保證高速埠與低速埠間協同工作。

3、缺點:傳輸延時較大,而且需要較大的緩存容量。

三、無碎片轉發(Fragment Free):

1、它檢查數據包的長度是否夠64個位元組,若小於64位元組,說明是廢包,進行丟棄,若大於64位元組,則發送該包。

2、這種方式可保證碰撞碎片不在網路中傳播,提高了網路效率,它的數據處理速度介於直通式和存儲轉發式之間。多用於低端交換機產品。

3、低端交換機產品一般只具有一種交換方式,有些高端交換機產品具有兩種交換方式,並且可以根據網路環境自動選擇交換方式。

四、按方式分類

1、在串列傳輸時,接收端如何從串列數據流中正確地劃分出發送的一個個字元所採取的措施稱為字元同步。根據實現字元同步方式不同,數據傳輸有非同步傳輸和同步傳輸兩種方式。

2、非同步傳輸每次傳送一個字元代碼(5~8bit),在發送每一個字元代碼的前面均加上一個「起」信號,其長度規定為1個碼元,極性為「0」,後面均加一個止信號,在採用國際電報二號碼時,止信號長度為1.5個碼元,在採用國際五號碼(見數據通信代碼)或其它代碼時,止信號長度為1或2個碼元,極性為「1」。

3、字元可以連續發送,也可以單獨發送;不發送字元時,連續發送止信號。每一字元的起始時刻可以是任意的(這也是非同步傳輸的含意所在),但在同一個字元內各碼元長度相等。接收端則根據字元之間的止信號到起信號的跳變(「1」→「0」)來檢測識別一個新字元的「起」信號,從而正確地區分出一個個字元。

4、因此,這樣的字元同步方法又稱起止式同步。該方法的優點是:實現同步比較簡單,收發雙方的時鍾信號不需要精確的同步。缺點是每個字元增加了2~3bit,降低了傳輸效率。它常用於1200bit/s及其以下的低速數據傳輸。

5、同步傳輸是以固定時鍾節拍來發送數據信號的。在串列數據流中,各信號碼元之間的相對位置都是固定的,接收端要從收到的數據流中正確區分發送的字元,必須建立位定時同步和幀同步。位定時同步又叫比特同步,其作用是使數據電路終接設備(DCE)接收端的位定時時鍾信號和DCE收到的輸入信號同步,以便DCE從接收的信息流中正確判決出一個個信號碼元,產生接收數據序列。

6、DCE發送端產生定時的方法有兩種:一種是在數據終端設備(DTE)內產生位定時,並以此定時的節拍將DTE的數據送給DCE,這種方法叫外同步。另一種是利用DCE內部的位定時來提取DTE端數據,這種方法叫內同步。

7、對於DCE的接收端,均是以DCE內的位定時節拍將接收數據送給DTE。幀同步就是從接收數據序列中正確地進行分組或分幀,以便正確地區分出一個個字元或其他信息。

8、同步傳輸方式的優點是不需要對每一個字元單獨加起、止碼元,因此傳輸效率較高。缺點是實現技術較復雜。通常用於速率為2400bit/s及其以上的數據傳輸。

熱點內容
101腳本 發布:2024-10-24 10:09:39 瀏覽:744
監控器密碼忘了怎麼辦 發布:2024-10-24 10:07:47 瀏覽:423
亞馬遜上傳同樣產品 發布:2024-10-24 10:06:24 瀏覽:979
多功能伺服器有什麼用 發布:2024-10-24 09:58:54 瀏覽:232
遠程腳本使用文件 發布:2024-10-24 09:52:08 瀏覽:382
休息模式的密碼是什麼 發布:2024-10-24 09:47:43 瀏覽:920
linux給文件設置許可權 發布:2024-10-24 09:46:56 瀏覽:339
騎砍2和吃雞哪個需要的配置高 發布:2024-10-24 09:37:35 瀏覽:297
python機器學習實踐指南 發布:2024-10-24 09:30:38 瀏覽:216
kindle電子書怎麼存儲文件夾 發布:2024-10-24 09:30:36 瀏覽:294