<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      數(shù)據(jù)緩存的兩種方法

      數(shù)據(jù)緩存的兩種方法:
      1.數(shù)據(jù)緩存到/data/data目錄(ROM) 數(shù)據(jù)緩存到手機的sd卡上
      特殊的業(yè)務(wù)場景,不允許把緩存數(shù)據(jù)存到手機的rom或者sd卡上

      2.把資源文件緩存到內(nèi)存(RAM)里面,保證了數(shù)據(jù)的安全性,并且不會占用、多用的外存儲空間

      1 private Map<String,Bitmap> bitmapCache;
      2 bitmapCache=new HashMap<String,Bitmap>();

      每一次顯示圖片的時候,首先判斷map緩存集合里面是否存在緩存的圖片對象

      1 OutOfMemoryException();

      軟引用:特殊的引用類型,當java虛擬機內(nèi)存不足的時候,虛擬機的垃圾回收器會試圖回收掉,采用軟引用方式應(yīng)用的對象,
      以達到釋放內(nèi)存空間的作用。(特點是由java虛擬機來保證的)
      強引用:默認的類型,如果一個對象 保存的有對應(yīng)的引用,這個對象就不會被垃圾回收器所回收

       

       1 //軟引用的集合,軟引用的集合里面的是一個bitmap的類型
       2 private Map<String,SoftReference<Bitmap>> bitmapCache;
       3 
       4 holder.iv.setImageBitmap(bitmapCache.get(book.getBookicon()).get());
       5 
       6 
       7 SoftReference<T> 軟引用的類型 T代表的是泛型
       8 
       9 SoftReference <Bitmap> sr=new SoftReference<Bitmap>(bitmap)//向軟引用里面存放一個bitmap
      10 
      11 Bitmap bitmap=sr.get();//獲取軟引用里面存放的bitmap
      12 
      13 //當內(nèi)存不足的時候 sr里面存放的對象會被系統(tǒng)的垃圾回收器回收,sr.get()==null;

      如果一個ListView里面有很多條目
      分批的方式,或者分頁的方式加載數(shù)據(jù)

      一次從服務(wù)器上加載5條數(shù)目信息,當用戶拖動界面到最下面的時候,加載更多的數(shù)據(jù)信息

      1.給listView注冊一個滾動的監(jiān)聽事件。
      2.當用戶把listView滾動到界面的最下面的時候,得到當前最后一個條目的position
      3.根據(jù)這個position獲取position~position+5的數(shù)據(jù)。
      4.通知listview更新顯示的數(shù)據(jù)內(nèi)容

       1 1.//給listview設(shè)置一個滾動的監(jiān)聽事件
       2 list.setOnScrollListener(new OnScrollListener(){
       3     /**
       4         靜止~滾動
       5         滾動~靜止
       6 */
       7     public void onScrollStateChanged(AbsListView view,int scrollState){
       8         
       9         if(isloading)//在加載數(shù)據(jù)的過程中 不再相應(yīng)listview的拖動事件,防止加載錯誤的信息,防止加載錯誤的id
      10             return;
      11 
      12 
      13         if(scrollState==OnScrollListener.SCROLL_STATE_IDLE){
      14             //如果listview里面最后一個可見的條目的id 等于當前l(fā)istview里面元素的個數(shù)大小
      15             //如果listview被拖動到了界面的最后一個條目
      16             int lastPostion=list.getLastVisiblePosition();//從0開始
      17             int size=books.size();//listview里面有多少個條目
      18             if(lastPostion==(size-1)){
      19                 //代表最后一個可見的條目是listview的最后一個條目
      20                 //加載更多的內(nèi)容
      21                 startPostion+=count;
      22                 //加載從startposition開始的數(shù)據(jù)
      23                 fillData();
      24             }
      25 
      26         }
      27     
      28     }
      29     public void onScroll(AbsListView view,int firstVisibleItem,int visibleItemCount,int totalItemCount){
      30     
      31         
      32     
      33     }
      34 
      35 });
      36 
      37 
      38 
      39 
      40 
      41 //ListView的懶加載
      42  
      43 //連接服務(wù)器下載圖片到本地,緩存圖片到本地sd卡上
      44 Bitmap bitmap=BitmapFactory.decodeFile("/sdcard/a.jpg");//這個方法如果圖片比較大 100k 150ms
      45 bitmap.compress(CompressFormat.JPEG,20,outputStream);
      46 
      47 //在SD卡上保存的有圖片的原圖,圖片的縮略圖
      48 
      49 /**
      50  當為了避免listview拖動的時候有卡頓的現(xiàn)象出現(xiàn),在listview滾動的時候顯示圖片的縮略圖
      51 */
      52 case OnScrollListener.SCROLL_STATE_IDLE:
      53     scrolling=false;
      54     int position=lv.getFirstVisiblePosition();
      55     //獲取listview里面的某個孩子的view對象lv.getChildAt(index);
      56     int count=lv.getChildCount();
      57     for(int i=0;i<count;i++){
      58         TextView tv=(TextView)lv.getChildAt(i);
      59         int realpostion=position+i;
      60         tv.setText("加載"+realpostion+"原圖");
      61     }

      解決listview的快速拖動的問題
      當listview在滾動狀態(tài)下,不去加載listview里面真是的圖片和內(nèi)容,而是把一個縮略圖加載界面上
      當listview的滾動狀態(tài)停止的時候 采取真正的更新里面的條目的內(nèi)容


      listview 屬性

      1 android:fastScrollEnabled="true" //如果listview有很多條目,在listview的右邊會顯示出來一個快速滾動的進度條
      2 android:scrollbarstyle=""//設(shè)置滾動條的位置
      3 scrollbars="none" //隱藏掉滾動條目
      4 
      5 lv.addHeaderView(v);//在listview上面增加一個view
      6 lv.addFooterView();//在listview尾部增加一個view

      如果要在滾動的時候在中間顯示東西
      那么就注冊onScrollListener 在onScroll事件中進行處理

       1 //listview滾動的時候 調(diào)用的方法
       2 private WindowManager wm;
       3 
       4         wm=getWindowManager();
       5 
       6 
       7 onScroll(){
       8 
       9     if(tv_index=null){
      10         tv_index=new TextView(this);
      11         tv_index.setText((String)lv.ItemAtPosition(firstVisibleItem));
      12         //這里的寫法具體的查看豆瓣的第3天 視頻19 code為listviewdemo
      13         wm.addView(tv_index,params);
      14     }
      15 }


      關(guān)于listview的優(yōu)化:
      1. listview的界面的優(yōu)化:

       1  android:divider="@android:color/transparent"  listview條目與條目之間的間隙的分割內(nèi)容
       2     android:paddingTop="5.0dip"   listview條目之間的間隙
       3     android:listSelector="@color/transparent" listview點中的顏色變化
       4     android:fastScrollEnabled="true"  如果listview有很多個條目 ,在listview的右邊 會顯示出來一個快速滾動的進度條
       5     (listview里面的條目至少要滾動5個屏幕以上)
       6     android:scrollbarStyle="outsideOverlay"
       7     android:scrollbars="none"
       8     footer view
       9     header view
      10     快速拖動時候的懸浮提示(window manager)
      11     
      12     
      13       新浪微博的 那個下拉更新是怎么做的啊 
      14       listview的下啦更新.
      15       1. 設(shè)置listview的headerview 顯示 向下拖動 更新的(默認的 顯示是隱藏的)
      16 
      17       
      18       
      19       
      20 2. listview數(shù)據(jù)顯示的優(yōu)化.
      21     復用歷史緩存的view對象, convertView 減少 采用布局填充器服務(wù) 填充布局的次數(shù),達到減少xml->view 操作的次數(shù).
      22     定義了靜態(tài)的viewholder 儲存了 view對象里面控件的引用, view.setTag() view.getTag(); 減少遍歷view對象 樹狀結(jié)構(gòu)的次數(shù).
      23     采用了內(nèi)存緩存 緩存一些經(jīng)常使用的數(shù)據(jù) 
      24     服務(wù)器上的圖片,緩存這些圖片,(緩存手機的內(nèi)存卡,sd卡)利用softreference把圖片給緩存到內(nèi)存里面
      25     listview的分頁顯示 
      26     //服務(wù)器需要提供接口, 一次獲取一段的數(shù)據(jù).
      27     //數(shù)據(jù)庫提供接口 ,一次查詢一段的數(shù)據(jù).
      28     listview的延時加載
      29     //如果listview里面要顯示的有很多的數(shù)據(jù), 我們不需要一次把所有的數(shù)據(jù)都獲取出來.
      30     //分段的方式 一段一段的把數(shù)據(jù)下載下來.
      31     注冊listview的 onScrollListener(); 發(fā)現(xiàn)最后一個可見的條目 為listview里面數(shù)據(jù)適配器里面的最后的一個條目, 加載更多的內(nèi)容.

      時間換空間: 內(nèi)存不足,不能直接獲取全部的數(shù)據(jù),只能多花時間,一段一段的獲取數(shù)據(jù)并顯示

      時間換時間: 開機優(yōu)化, 開機的服務(wù)要啟動,應(yīng)用程序要啟動加載.
      如何優(yōu)化android手機的啟動速度, 如何優(yōu)化android的虛擬機.

      空間換空間: 大數(shù)據(jù)的交換和存儲

      空間換時間: 內(nèi)存緩存 sd卡緩存  空間換時間.
          


          
      解決listview的快速拖動的問題:
      當listview在滾動狀態(tài)下,不去加載listview里面真實的圖片和內(nèi)容,而是把一個縮略圖加載界面上.
      當listview的滾動狀態(tài)停止的時候 才去真正的更新里面的條目的內(nèi)容.

       

       

      posted @ 2013-01-29 14:52  王世楨  閱讀(1141)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 久久亚洲色www成人欧美| 蜜桃无码一区二区三区| 久久综合九色综合久桃花| 久久婷婷大香萑太香蕉av人| 中文字幕少妇人妻精品| 色一情一乱一区二区三区码| 91孕妇精品一区二区三区| gogogo高清在线观看视频中文| 成人福利国产午夜AV免费不卡在线| 少妇私密会所按摩到高潮呻吟| 邳州市| 丰满人妻熟妇乱又伦精品劲| 亚洲真人无码永久在线| 97久久精品无码一区二区天美| 欧美日韩精品一区二区在线观看| 日韩有码中文在线观看| 老熟女高潮一区二区三区| 国产婷婷精品av在线| 亚洲人成在久久综合网站| 精品国产免费一区二区三区香蕉| 色哟哟www网站入口成人学校| 国产精品无码无卡在线观看久| 一区二区三区激情都市| 国产精品午夜福利导航导| 乱码中文字幕| 日本免费一区二区三区日本| 国产精品av中文字幕| 久久精品网站免费观看 | 久久三级国内外久久三级| CAOPORN免费视频国产| 国产不卡一区不卡二区| 欧美亚洲精品中文字幕乱码 | 深夜福利国产精品中文字幕| 亚洲精品日韩在线观看| 非会员区试看120秒6次| 日韩精品亚洲专区在线播放| 99热门精品一区二区三区无码| 成人精品区| 无码人妻丝袜在线视频| 久久婷婷五月综合色和啪| 国产精品午夜福利免费看|