1. glide結合recyclerview(listview)實現列表滑動的時候不載入,滑動停止的時候載入
@override
public void onscrollstatechanged(abslistview view, int newstate)
catch (exception e)
break;
case scroll_state_fling:
//正在滾動
try
catch (exception e)
break;
} }
new thread(new runnable()
}).start();
2、大量的執行緒建立、執行和銷毀是非常耗cpu和記憶體的,這樣將直接影響系統的吞吐量,導致效能急劇下降,如果記憶體資源占用的比較多,還很可能造成oom
3、大量的執行緒的建立和銷毀很容易導致gc頻繁的執行,從而發生記憶體抖動現象,而發生了記憶體抖動,對於移動端來說,最大的影響就是造成介面卡頓
execute(runnable command)
作用:該方法返回乙個固定執行緒數量的執行緒池,該執行緒池中的執行緒數量始終不變,即不會再建立新的執行緒,也不會銷毀已經建立好的執行緒,自始自終都是那幾個固定的執行緒在工作,所以該執行緒池可以控制線程的最大併發數。
栗子:假如有乙個新任務提交時,執行緒池中如果有空閒的執行緒則立即使用空閒執行緒來處理任務,如果沒有,則會把這個新任務存在乙個任務佇列中,一旦有執行緒空閒了,則按fifo方式處理任務佇列中的任務。
作用:該方法返回乙個可以根據實際情況調整執行緒池中線程的數量的執行緒池。即該執行緒池中的執行緒數量不確定,是根據實際情況動態調整的。
栗子:假如該執行緒池中的所有執行緒都正在工作,而此時有新任務提交,那麼將會建立新的執行緒去處理該任務,而此時假如之前有一些執行緒完成了任務,現在又有新任務提交,那麼將不會建立新執行緒去處理,而是復用空閒的執行緒去處理新任務。那麼此時有人有疑問了,那這樣來說該執行緒池的執行緒豈不是會越集越多?其實並不會,因為執行緒池中的執行緒都有乙個「保持活動時間」的引數,通過配置它,如果執行緒池中的空閒執行緒的空閒時間超過該「儲存活動時間」則立刻停止該執行緒,而該執行緒池預設的「保持活動時間」為60s。
作用:該方法返回乙個只有乙個執行緒的執行緒池,即每次只能執行乙個執行緒任務,多餘的任務會儲存到乙個任務佇列中,等待這乙個執行緒空閒,當這個執行緒空閒了再按fifo方式順序執行任務佇列中的任務。
作用:該方法返回乙個可以控制線程池內執行緒定時或週期性執行某任務的執行緒池。
作用:該方法返回乙個可以控制線程池內執行緒定時或週期性執行某任務的執行緒池。只不過和上面的區別是該執行緒池大小為1,而上面的可以指定執行緒池的大小。
舉例子:
newfixedthreadpool
executorservice fixedthreadpool = executors.newfixedthreadpool(3);
for (int i = 1; i <= 10; i++) catch (interruptedexception e)
}});
}
App效能優化
首先,我們來了解一下,安卓裡面的記憶體分配方式以及它的 方式,的設定最大記憶體這段 不起作用 設定了也沒有什麼用 對於那種太久沒有使用的程序,而且又消耗記憶體的,就直接被gc 安卓的一種 機制 給 掉了。上附帶的功能進行檢視 當然也可以通過 來實現檢視 runtime.getruntime maxt...
APP效能優化基礎
這裡我大概從以下幾個方面分析吧 資料解析 從解析難度和速度來看,大家都比較傾向於json,目前也是最主流的資料格式。在android開發中可以使用優秀的解析庫來加快我們的解析速度,xml有jsoup,json有jackson gson,我們可以通過這些庫來幫助我們更快的完成資料解析,提高我們客戶端的...
優化APP效能(一)
我們都知道如何在android中建立乙個執行緒,如下 new thread new runnable start 但是這樣子建立執行緒有乙個缺點就是當乙個專案非常大,很多地方都需要開啟子執行緒去執行任務的時候,不斷建立執行緒對於系統的開銷還是非常大的,一定程度上影響系統效能。那麼我們如何才能提高執行...