1. 程式人生 > >Fresco的使用和快取清理

Fresco的使用和快取清理

Fresco 是一個強大的圖片載入元件。使用它之後,你不需要再去關心圖片的載入和顯示這些繁瑣的事情!它還有3級快取。所有在圖片載入的時候根本不需要擔心出現OutOfMemoryError等異常出現。

1.新增配置:

(1).新增  

compile 'com.facebook.fresco:fresco:1.4.0'
到build.gradle中
    (2).新增 mavenCentral() 另一個build.gradle中  如:
allprojects {
    repositories {
        jcenter()
        mavenCentral()
        

    }
}
  (3).建立一個	BaseApplication 類整合Application 在它的onCreate()方法裡初始化fresco  如:
public class Base1Application extends Application {
    private Context context;
    @Override
public void onCreate() {
        super.onCreate();

        context=getApplicationContext();
        Fresco.initialize(context);

    }
}
(記得需要在配置檔案中新增這個BaseApplication才行   如:
<application
    android:name=".Util.BaseApplication"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
2.使用fresco
在xml檔案中的使用:
<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:fresco="http://schemas.android.com/apk/res-auto" android:id="@+id/activity_fresco" android:orientation="vertical" android:background="#dfd8d8" android:gravity="center_horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <!--SimpleDraweeView的在layout_widthlayout_height裡面都不可以用wrap_content--> <com.facebook.drawee.view.SimpleDraweeView android:layout_width="match_parent" android:layout_height="200dp" android:id="@+id/image_1" /> <!--roundAsCircle 可以讓圖片為圓形 actualImageScaleType 設定圖片的type --> <com.facebook.drawee.view.SimpleDraweeView android:layout_marginTop="20dp" android:layout_width="100dp" android:layout_height="100dp" android:id="@+id/image_2" fresco:roundAsCircle="true" fresco:actualImageScaleType="focusCrop" /> <!--fresco:failureImage:配置的是下載成功之前顯示的圖片 failureImageScaleType:配置的是下載成功之前顯示的圖片的type 載入失敗的時候顯示的圖片 fresco:failureImage="@drawable/error" fresco:failureImageScaleType="centerInside" 載入失敗,提示使用者點選重新載入的圖片(會覆蓋failureImage的圖片) fresco:retryImage="@drawable/retrying" fresco:retryImageScaleType="centerCrop" --> <com.facebook.drawee.view.SimpleDraweeView android:layout_marginTop="20dp" android:layout_width="match_parent" android:layout_height="100dp" android:id="@+id/image_3" fresco:failureImage="@drawable/timg4" fresco:failureImageScaleType="centerInside" /> <LinearLayout android:background="#ffffff" android:layout_marginTop="20dp" android:gravity="center_horizontal" android:layout_width="match_parent" android:orientation="horizontal" android:layout_height="wrap_content"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="asd" android:id="@+id/fre_text" android:textSize="30sp" /> <Button android:layout_marginLeft="100dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="清楚快取" android:textSize="20sp" android:id="@+id/fre_button" /> </LinearLayout> </LinearLayout>
(對於frecos的SimpleDraweeView的主要API的使用已經在備註中寫的很清楚的,還有更多的需要自行去百度查找了!
在java檔案中的使用:
public class FrescoActivity extends AppCompatActivity {
    private SimpleDraweeView mSdv1;
    private SimpleDraweeView mSdv2;
    private SimpleDraweeView mSdv3;
    private TextView mTextView;
    private Button mButton;
    @Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_fresco);
        getSupportActionBar().hide();
        mSdv1=(SimpleDraweeView)findViewById(R.id.image_1);
        mSdv2=(SimpleDraweeView)findViewById(R.id.image_2);
        mSdv3=(SimpleDraweeView)findViewById(R.id.image_3);
        mTextView=(TextView)findViewById(R.id.fre_text);
        mButton=(Button)findViewById(R.id.fre_button);

        String imageUrl="http://img5.imgtn.bdimg.com/it/u=3058668829,3584059364&fm=26&gp=0.jpg";
        String imageUrl2="http://up.qqjia.com/z/face01/face06/facejunyong/junyong04.jpg";
        String imageUrl3="http://img0.imgtn.bdimg.com/it/u=393316857,400369203&fm=26&gp=0.jpg";

        mSdv1.setImageURI(Uri.parse(imageUrl));
        mSdv2.setImageURI(Uri.parse(imageUrl2));
        mSdv3.setImageURI(Uri.parse(imageUrl3));


        //獲取Fresco的快取大小
long cacheSize = Fresco.getImagePipelineFactory().getMainFileCache().getSize();
        long number=cacheSize/1048576;
        mTextView.setText(number+"M");
        Log.i("jaing",cacheSize+"");


        mButton.setOnClickListener(new View.OnClickListener() {
            @Override
public void onClick(View v) {
                clearCache();

            }
        });

    }
    private void  clearCache(){
        ImagePipeline imagePipeline = Fresco.getImagePipeline();
        //清空記憶體快取(包括Bitmap快取和未解碼圖片的快取)
imagePipeline.clearMemoryCaches();
        //清空硬碟快取,一般在設定介面供使用者手動清理
imagePipeline.clearDiskCaches();

        //同時清理記憶體快取和硬碟快取
imagePipeline.clearCaches();


        long cacheSize =Fresco.getImagePipelineFactory().getMainFileCache().getSize();
        long number=cacheSize/1048576;
        Log.i("jaing",cacheSize+"");
        mTextView.setText(number+"M");
    }
}
(其中的使用是直接載入圖片,所以需要新增
<uses-permission android:name="android.permission.INTERNET" />訪問網路這個許可權,
同時在上面的Button中的點選事件實現的快取的清理。

相關推薦

Fresco的使用快取清理

Fresco 是一個強大的圖片載入元件。使用它之後,你不需要再去關心圖片的載入和顯示這些繁瑣的事情!它還有3級快取。所有在圖片載入的時候根本不需要擔心出現OutOfMemoryError等異常出現。 1.新增配置: (1).新增   compile 'com.faceb

Hibernate髒資料檢查快取清理策略

簡述 清理快取: 對當前持久化狀態的快取資料進行檢查,並且將有修改的資料持久化到資料庫當中的過程稱為“清理快取”。清理快取有一定的觸發策略。 策略詳解: 當一個物件在持久化的時候會新增到session

關於網頁上的操作留存的cookie快取清理

背景是這樣的,一個網頁形式的登入頁,用WKWebView載入,輸入完賬戶密碼後,點選登入按鈕登入,而後我退出登入,並dismiss掉這個網頁登入頁回到這個登入頁之前的一個,當我點選這一頁的按鈕present這個登入頁的時候,我發現他並沒有出現登入頁,而是直接調取登入方法登

關於Fresco快取清理的那些事

前言 我相信很多人對Fresco這個優秀的第三方網路圖片處理框架不陌生,無論從使用還是配置而言都是很人性化的簡單,今天要講述的是我遇到的關於快取清理的事情。(原文) 正文 Fresco自身的快取清理時機 當我們手動退出整個app的時候,發現之前

redis的常用命令、問題一些快取清理

Q、C盤空間不足 解決方式:多資料夾檢視大小,逐步縮小方位, 最終定位位置: 快取清理目錄:C:\Windows\ServiceProfiles\NetworkService\AppData\Local\Redis [圖片] Q、檢視redis版本和redis埠: 1

Xcode快取清理不用的證書刪除

簡單說兩句 快取 Xcode在編譯工程的時候都會產生快取,長此以往,會佔用大量的硬碟空間。特別對於mac,硬碟空間本來就不富餘。 不用證書 不用的證書刪除亦能節省空間,且太多證書存在也不方便Xcode選擇證書。 清理方法 針對快取 Finder->前往-&g

Android內部儲存外部儲存以及快取清理記憶體清理

android內部的儲存結構和路徑獲取方法:清除本地資料和快取:計算快取和記憶體資料的大小:計算快取大小以及刪除的方法:這文章裡面的檔案刪除方法有一些問題:沒有迴圈是資料夾的刪除方法;另外:File.list(); 獲取的是該資料夾下的所有子檔案的相對路徑;File.list

Fresco正傳(7):如何手動清理Fresco快取

前言 這篇是隨手寫的,有博友在樓下提問相關問題。 這裡先把我知道的方案放這裡,以後有空詳細寫。 另外,請注意:雖然我找到了如何清理快取的方法,但是目前還未實際測試過。請自行測試哦。 正文 public class ImagePipelineCo

php輸出緩衝區快取技術實現

系統緩衝區定義:一個記憶體地址空間,用來儲存速度不同步的裝置或者優先順序不同的裝置之間儲存資料。例如使用vim編輯器時,系統並不會立即把一個字元寫入 磁碟而是緩衝區,當寫滿時或者呼叫flush()函式時才儲存到磁碟上。 php輸出快取區:預設時當echo或者print時,

jfinalQ開發教程06-qiao-util.jar:日誌快取

日誌 常見日誌元件 java中常用的日誌有自帶的logging,log4j,logback,slf4j等, jfinalQ中使用slf4j+logback,上面幾種日誌元件的對比詳見:http://www.importnew.com/7450.html, slf4j準

SpringBoot學習筆記(10)-----SpringBoot中使用Redis/Mongodb快取Ehcache快取redis快取

1. 使用Redis   在使用redis之前,首先要保證安裝或有redis的伺服器,接下就是引入redis依賴。   pom.xml檔案如下 <dependency> <groupId>org.springframework.boot</

Redis總結(五)快取雪崩快取穿透等問題

前面講過一些redis 快取的使用和資料持久化。感興趣的朋友可以看看之前的文章,http://www.cnblogs.com/zhangweizhong/category/771056.html 。今天總結總結快取使用過程中遇到的一些常見的問題。比如快取雪崩,快取穿透,快取預熱等等。 快取雪崩

編譯安裝nginx並實現反向代理負載均衡快取功能

一、編譯安裝nginx 1、下載 [[email protected] ~]# wget http://nginx.org/download/nginx-1.10.0.tar.gz 2、解壓 [[email protected] ~]#&

MyBatis的事務管理快取機制

一、MyBatis的事務管理 1.事務的概念:事務是一個或幾個操作組成的一個整體執行單元,它們要麼全部執行,要麼全不執行,不能只執行其中的某幾個操作;可以理解為一個事務是一個程式中執行的最小單元。 2.事務的特性:事務包含四個特性:原子性、一致性、隔離性、永續性,簡稱ACID性,具體詳解如下

瞅一瞅快取穿透、快取擊穿快取雪崩

概念 快取穿透:正常來說,一個合理設計的快取命中率肯定是在50%以上,如果大量 的去避開快取 ,就會因為 miss cache 造成對DB的負載 快取擊穿:某一個高流量的 熱點Key,在失效的一瞬間,造成的負載 快取雪崩:很多Key的失效時間相同 ,快取

如何幹淨的解除安裝Xcode快取

如何幹淨的解除安裝Xcode和快取 根目錄下的必須要用管理員許可權 然後刪除自己目錄下的 以及和開發者相關的 xcode快取目錄 原文連結 根目錄下的必須要用管理員許可權 sudo rm -rf /Applications/

iOS開發 WKWebView快取清理

WKWebView清除快取只能iOS9使用,低於iOS9執行會崩潰哦!所以,為了適配iOS7和iOS8,還是要做版本判斷 if ([[[UIDevice currentDevice]systemVersion]intValue ] >= 9.0) {     &nb

Spring Cloud Eureka原理分析(二):續租、下線、自我保護機制自動清理(服務端)

續租、下線等操作比較直觀,實際上也不復雜。讓我們自己想想它們大概會在服務端有什麼操作。 renew: 更新Lease的lastUpdateTimestamp, 更新一下InstanceInfo的最新狀態。然後呼叫其他同伴節點的renew介面。 cancel:把lease從registry中移除,設

Fresco磁碟快取

package zjj.bwie.com.zk_demo03.app; import android.app.Application; import android.os.Environment; import com.facebook.cache.disk.DiskCa

【併發程式設計】CPU cache結構快取一致性(MESI協議)

一、cache cpu cache已經發展到了三級快取結構,基本上現在買的個人電腦都是L3結構。 1. cache的意義 為什麼需要CPU cache?因為CPU的頻率太快了,快到主存跟不上,這樣在處理器時鐘週期內,CPU常常需要等待主存,浪費資源。所以cac