編輯:關於Android編程
原文地址:http://android.xsoftlab.net/training/improving-layouts/smooth-scrolling.html
想要讓ListView滑動流暢的關鍵所在是減輕主線程的負擔。要確保任何的磁盤訪問、網絡訪問、或者SQL訪問都是在單獨的線程中執行的。如果要測試APP的狀態,可以開啟StrictMode。
使用工作線程可以使UI線程將所有的注意力都集中在UI的繪制上。在很多情況下,使用AsyncTask所提供的功能就可以在工作線程中處理耗時任務。AsyncTask會自動的將execute()發起的請求排隊,並依次執行。這意味著你不要自己創建線程池。
在下面的示例代碼中,AsyncTask被用來加載一張圖像,並在加載結束後自動的將其渲染到UI上。它還在圖像加載時展示了一個旋轉的進度條。
// Using an AsyncTask to load the slow images in a background thread new AsyncTask() { private ViewHolder v; @Override protected Bitmap doInBackground(ViewHolder... params) { v = params[0]; return mFakeImageLoader.getImage(); } @Override protected void onPostExecute(Bitmap result) { super.onPostExecute(result); if (v.position == position) { // If this item hasn't been recycled already, hide the // progress and set and show the image v.progress.setVisibility(View.GONE); v.icon.setVisibility(View.VISIBLE); v.icon.setImageBitmap(result); } } }.execute(holder);
從Android 3.0開始,AsyncTask提供了一項新特性:可以將任務運行在多核處理器上。你可以使用executeOnExecutor()方法發起執行請求,這樣多個請求就可以同時進行,同時進行的任務數量取決於CPU的核心數量。
在滑動ListView時,代碼可能會頻繁的調用findViewById(),這會降低性能。就算是Adapter將已經加載過的View返回,但是在復用時還是需要去查詢這些View來更新它們。杜絕重復使用findViewById()的方法就是使用”View Holder”設計模式。
ViewHolder對象將每個View組件存儲於布局容器的tag屬性內,所以你可以快速訪問它們而不需要每次都去查詢。首先,你需要創建一個類來持有已加載的View:
static class ViewHolder { TextView text; TextView timestamp; ImageView icon; ProgressBar progress; int position; }
然後對ViewHolder的成員屬性賦值,然後將其存放在布局容器內:
ViewHolder holder = new ViewHolder(); holder.icon = (ImageView) convertView.findViewById(R.id.listitem_image); holder.text = (TextView) convertView.findViewById(R.id.listitem_text); holder.timestamp = (TextView) convertView.findViewById(R.id.listitem_timestamp); holder.progress = (ProgressBar) convertView.findViewById(R.id.progress_spinner); convertView.setTag(holder);
那麼現在就可以很方便的對這些View組件進行訪問,而不再需要對它們單獨進行查詢,如此便可以節省出寶貴的CPU資源。
1 前言當然對於MVP的解說也是使用也是層出不窮,我也網絡上也能看到各種版本的解說,之前博客也有文章的更新,裡面有MVP的詳細說明和項目代碼—>Andr
TCP和UDP在網絡傳輸中非常重要,在Android開發中同樣重要。首先我們來看一下什麼是TCP和UDP。什麼是TCP?TCP:Transmission Control
Android中的測試無非是分為兩種:一、在一個工程裡面寫測試代碼。二、專門新建一個工程寫測試代碼。一、在一個工程裡面寫測試代碼步驟:1、寫一個類繼承AndroidTes
大家都發過微信小視頻到朋友圈,有時候,想看看以前自己發的小視頻,但是發現朋友圈的動態已經刪除了,那麼這樣怎麼去找回微信小視頻呢?微信小視頻保存在哪裡呢?下面