編輯:關於Android編程
一、內存溢出
現在的智能手機內存已經足夠大,但是對於一個應用程序來說智能手機當中稀缺的內存,仍然是應用程序的一大限制。在Android應用程序開發當中,最常見的內存溢出問題(OOM)是在加載圖片時出現的,尤其是在不知道圖片大小的情況下。
潛在的內存溢出操作主要包括以下幾點:
1、從網絡當中加載用戶特定的圖片。因為直到我們在下載圖片的時候我們才知道圖片的大小。
2、向Gallery加載圖片。因為現在智能手機的攝像頭有很高的分辨率,在加載圖片的時候需要最圖片進行處理,然後才能正常的使用。
請注意一點,Android系統是從系統全局的觀念來分配內存以加載圖片的,這就意味著,即使你的應用有足夠大的內存可用,內存溢出問題(out of memroy,OOM)仍然可能出現,因為所有的應用共享一個加載圖片的內存池(我們使用BitmapFactory進行解析)。
二、解決內存溢出問題
原文(Downsampling為了好理解,解釋為,程序A)。程序A通過調整像素,同時使其均衡化來降低圖片的分辨率。因為不管問題圖片是因為太大而不能再手機上正常顯現,這個圖片都會縮短其寬度以在ImageView當中顯示,當圖片在ImageView當中顯示時,我們會因為加載一些沒有必要的原始圖片而浪費掉內存。
因此,更加有效的加載圖片的時機是在其初始化處理的時候。
以下是處理代碼:
1: private static Bitmap getResizedImage(String path, byte[] data, int targetWidth){
2:
3: BitmapFactory.Options options = new BitmapFactory.Options();
4: options.inJustDecodeBounds = true;
5:
6: BitmapFactory.decodeFile(path, options);
7:
8: int width = options.outWidth;
9:
10: int ssize = sampleSize(width, targetWidth);
11:
12:
13: options = new BitmapFactory.Options();
14: options.inSampleSize = ssize;
15:
16: Bitmap bm = null;
17: try{
18: bm = decode(path, data, options);
19: }catch(OutOfMemoryError e){
20: AQUtility.report(e);
21: }
22:
23:
24: return bm;
25:
26: }
27:
28: private static int sampleSize(int width, int target){
29:
30: int result = 1;
31:
32: for(int i = 0; i < 10; i++){
33:
34: if(width < target * 2){
35: break;
36: }
37:
38: width = width / 2;
39: result = result * 2;
40:
41: }
42:
43: return result;
44: }
三、AQuery
當在Android應用程序開發當中使用AQuery組件時,處理這個問題會變的更加的簡單。
Down sample from the Internet
1: String url = "http://farm6.static.flickr.com/5035/5802797131_a729dac808_b.jpg";
2: aq.id(R.id.image1).image(imageUrl, true, true, 200, 0);
Down sample image from File
1: File file = new File(path);
2: //load image from file, down sample to target width of 300 pixels
3: aq.id(R.id.avatar).image(file, 300);
作者:liuxian13183
在Android native編寫代碼時,會經常接觸到sp、wp,sp並不是smart pointer的意思,而是strong point;wp就是weak point
在項目中,經常需要判斷是否有網絡連接。最近學習了如何判斷軟件是否聯網,如果沒有聯網,彈出提示信息,連接網絡。效果:(1)聯網情況下: (2)不聯網情況下:(3)
下面來介紹一下標題的題目,之前剛接觸Android Studio也是一頭霧水,在此寫下來和大家分享:】(一) . Andriod Studio下載網址:http://ww
最近在做android串口的開發,找到一個開源的串口類android-serialport-api。其主頁在這裡http://code.google.com/p/andr