2017-08-23 90 views
1

我已將我的應用連接到Firebase數據庫並顯示之前保存的圖像。他們從數據庫中檢索得很好,並顯示在我的應用程序的屏幕上沒有問題。此外,我想在應用程序運行時保存它們。我希望將它們保存在本地,與我的主要活動生命週期無關,這樣當整個應用程序被銷燬並重新啓動時,它們只能從本地存儲中重新加載。將多個圖像從Firebase數據庫保存到本地存儲

imageDownloadList = new ArrayList<>(); 
    lv = (ListView) findViewById(R.id.listView); 

    progressDialog = new ProgressDialog(this); 
    progressDialog.setMessage("Images are downloading are loading please wait"); 
    progressDialog.show(); 

    mDatbaseRef = FirebaseDatabase.getInstance().getReference(Constants.FB_DATABASE_PATH); 

    mDatbaseRef.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      progressDialog.dismiss(); 

      for(DataSnapshot snapshot: dataSnapshot.getChildren()) 
      { 
       ImageDownload img = snapshot.getValue(ImageDownload.class); 
       imageDownloadList.add(img); 
      } 

      adapter = new ImageListAdapter(ImageViewActivity.this, R.layout.image_item, imageDownloadList); 
      lv.setAdapter(adapter); 
     } 

所以這是我得到的圖像。但是我怎樣才能保存圖像數組。所以這將是imageDownloadList arrayList。

+0

Save how?文件,Sqlite? Firebase緩存在本地,對嗎?你需要明確保存任何東西嗎? –

+0

嗯,每次我關閉活動,它就會失效,圖像不得不重新加載。我不希望用戶在應用程序運行後每次啓動活動時都必須重新加載所有圖像。 我真的很難解釋的東西。 所以一旦用戶破壞整個應用程序。所有存儲在本地的圖像都會被破壞,並且一旦它們再次打開,就必須重新載入應用程序。如果這很有意義 –

+0

只需要在應用程序在本地運行時保存圖像文件,然後在應用程序被銷燬後將其刪除。當它重新啓動時重新加載它們。 –

回答

1

其中一個簡單的方法是將該圖像轉換爲base64字符串並使用SharedPreferences或Sqlite進行保存。所以當你再次打開應用程序時,你可以得到base64字符串,轉換成圖像並顯示它。