在用戶登錄後的我的應用中,我有一個加載屏幕並在後臺進行一些準備工作。我下載用戶數據和產品類別,並將它們放在本地SQLite基礎中。如何在應用啓動時設置我所有活動的圖像瀏覽和文字瀏覽,而不是在創建活動時
如何在此階段爲不同的活動設置ImageViews源圖像,並在創建活動本身時不加載它們?
例如,我有一個滑動菜單,它也顯示用戶圖像,我希望用戶圖像在用戶打開滑動菜單時已經存在。 我想在用戶打開「我的個人資料」時將他們的數據加載到那裏。
我該如何做到這一點?
在用戶登錄後的我的應用中,我有一個加載屏幕並在後臺進行一些準備工作。我下載用戶數據和產品類別,並將它們放在本地SQLite基礎中。如何在應用啓動時設置我所有活動的圖像瀏覽和文字瀏覽,而不是在創建活動時
如何在此階段爲不同的活動設置ImageViews源圖像,並在創建活動本身時不加載它們?
例如,我有一個滑動菜單,它也顯示用戶圖像,我希望用戶圖像在用戶打開滑動菜單時已經存在。 我想在用戶打開「我的個人資料」時將他們的數據加載到那裏。
我該如何做到這一點?
數據將僅在活動創建時顯示。 但是你可以做的是在後臺加載圖像位圖並緩存它。 當用戶打開滑動菜單時,只需將其設置爲圖像視圖,而不是再次加載。
你也可以使用通用圖像加載器,它只會加載一次圖像。
對於我的配置文件數據,您可以再次從服務器獲取所有數據,同時顯示加載屏幕並將此數據保存在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
你能給我一個例子,在後臺加載圖像位圖並緩存它嗎? –
保存SharedPreferences中的數據與您建議的一樣,並將其存儲在SQLite數據庫中與我打算做的那樣有什麼區別 –
如果您擁有大量複雜結構形式的數據,則應該使用SQLite,但如果它只是一個用戶你可以簡單地將數據存儲在SharedPrefrences中。 –