在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Android/ 避免阻塞I/O的操作
combineLatest
從列表創(chuàng)建一個Observable
RxJava的與眾不同之處
Schedulers
RxJava觀察者模式工具包
總結(jié)
工具
你什么時候使用觀察者模式?
GroupBy
App架構(gòu)
組合Observables
創(chuàng)建Activity類
StartWith
RX - 從.NET到RxJava
處理耗時的任務
過濾Observables
向響應式世界問好
避免阻塞I/O的操作
Join
有且僅有一次
Schedulers-解決Android主線程問題
轉(zhuǎn)換Observables
啟動引擎
我們的第一個Observable
總結(jié)
StrictMode
Debounce
*map家族
創(chuàng)建RecyclerView Adapter
為什么是Observables?
Merge
再多幾個例子
總結(jié)
Buffer
Window
總結(jié)
Timeout
執(zhí)行網(wǎng)絡任務
項目目標
來到Java世界 - Netflix RxJava
獲取我們需要的數(shù)據(jù)
Observable
過濾序列
非阻塞I/O操作
ZIP
總結(jié)
And,Then和When
觀察者模式
Retrofit
Cast
Skip and SkipLast
微軟響應式擴展
與REST無縫結(jié)合-RxJava和Retrofit
First and last
RxJava Essentials 中文翻譯版
Switch
ElementAt
總結(jié)
總結(jié)
總結(jié)
Sampling
SubscribeOn and ObserveOn
Subject = Observable + Observer

避免阻塞I/O的操作

阻塞I/O的操作會導致App必須等待結(jié)果返回(阻塞結(jié)束)才能進行下一步操作。在UI線程上執(zhí)行一個阻塞操作會將UI強行卡住,直接造成很糟糕的用戶體驗。

我們激活StrictMode后,我們開始收到了關于我們的App錯誤操作磁盤I/O的不良信息。

D/StrictMode  StrictMode policy violation; ~duration=998 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=31 violation=2
at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk (StrictMode.java:1135)
at libcore.io.BlockGuardOs.open(BlockGuardOs.java:106) at libcore.io.IoBridge.open(IoBridge.java:393)
at java.io.FileOutputStream.<init>(FileOutputStream.java:88) 
at android.app.ContextImpl.openFileOutput(ContextImpl.java:918) 
at android.content.ContextWrapper.openFileOutput(ContextWrapper. java:185)
at com.packtpub.apps.rxjava_essentials.Utils.storeBitmap (Utils.java:30)

上一條信息告訴我們Utils.storeBitmap()函數(shù)執(zhí)行完耗時998ms:在UI線程上近1秒的不必要的工作和App上近1秒不必要的遲鈍。這是因為我們以阻塞的方式訪問磁盤。我們的storeBitmap()函數(shù)包含了:

FileOutputStream fOut = context.openFileOutput(filename, Context.MODE_PRIVATE);

它直接訪問智能手機的固態(tài)存儲然后就慢了。我們該如何提高訪問速度呢?storeBitmap()函數(shù)保存了已安裝App的圖標。他的返回值類型為void,因此在執(zhí)行下一個操作前我們毫無理由去等待直到它完成。我們可以啟動它并讓它執(zhí)行在不同的線程。近幾年來Android的線程管理發(fā)生了許多變化,導致App出現(xiàn)詭異的行為。我們可以使用AsyncTask,但是我們要避免掉入前幾章里的onPre... onPost...doInBackGround地獄。下面我們將換用RxJava的方式。調(diào)度器萬歲!

上一篇:總結(jié)下一篇:Debounce