2013-12-22 27 views
1

在用戶登錄後的我的應用中,我有一個加載屏幕並在後臺進行一些準備工作。我下載用戶數據和產品類別,並將它們放在本地SQLite基礎中。如何在應用啓動時設置我所有活動的圖像瀏覽和文字瀏覽,而不是在創建活動時

如何在此階段爲不同的活動設置ImageViews源圖像,並在創建活動本身時不加載它們?

例如,我有一個滑動菜單,它也顯示用戶圖像,我希望用戶圖像在用戶打開滑動菜單時已經存在。 我想在用戶打開「我的個人資料」時將他們的數據加載到那裏。

我該如何做到這一點?

回答

2

數據將僅在活動創建時顯示。 但是你可以做的是在後臺加載圖像位圖並緩存它。 當用戶打開滑動菜單時,只需將其設置爲圖像視圖,而不是再次加載。

你也可以使用通用圖像加載器,它只會加載一次圖像。

對於我的配置文件數據,您可以再次從服務器獲取所有數據,同時顯示加載屏幕並將此數據保存在SharedPreferences或應用程序上下文中,並且當用戶移動到我的配置文件時,只需將該數據設置爲視圖。

對於加載圖像的位圖,你可以使用下面的函數調用它的AsyncTask:

public static Bitmap loadBitmap(String url) { 
    Bitmap bitmap = null; 
    InputStream in = null; 
    BufferedOutputStream out = null; 

    try { 
     in = new BufferedInputStream(new URL(url).openStream(), IO_BUFFER_SIZE); 

     final ByteArrayOutputStream dataStream = new ByteArrayOutputStream(); 
     out = new BufferedOutputStream(dataStream, IO_BUFFER_SIZE); 
     copy(in, out); 
     out.flush(); 

     final byte[] data = dataStream.toByteArray(); 
     BitmapFactory.Options options = new BitmapFactory.Options(); 
     //options.inSampleSize = 1; 

     bitmap = BitmapFactory.decodeByteArray(data, 0, data.length,options); 
    } catch (IOException e) { 
     Log.e(TAG, "Could not load Bitmap from: " + url); 
    } finally { 
     closeStream(in); 
     closeStream(out); 
    } 

    return bitmap; 
} 

參考: How to load an ImageView by URL in Android?

要不然我發現這個職位,你可以嘗試一下

URL url = new URL(strUrl); 
URLConnection connection = url.openConnection(); 
connection.setUseCaches(true); 
Object response = connection.getContent(); 
if (response instanceof Bitmap) { 
    Bitmap bitmap = (Bitmap)response; 
} 

參考編號: Android image caching

+0

你能給我一個例子,在後臺加載圖像位圖並緩存它嗎? –

+0

保存SharedPreferences中的數據與您建議的一樣,並將其存儲在SQLite數據庫中與我打算做的那樣有什麼區別 –

+1

如果您擁有大量複雜結構形式的數據,則應該使用SQLite,但如果它只是一個用戶你可以簡單地將數據存儲在SharedPrefrences中。 –

相關問題