編輯:關於Android編程
為什麼是二呢,之前遇到過一次了,詳見http://blog.csdn.net/jason0539/article/details/12222173
這次的原因不同,再記錄下
public class DownloadTask { /** * @param path下載地址 * @param filePath存儲路徑 * @param progressDialog進度條 * @return * @throws Exception */ public static File getFile(String path,String filePath,ProgressDialog progressDialog) throws Exception{ URL url = new URL(path); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setConnectTimeout(2000); connection.setRequestMethod("GET"); if(connection.getResponseCode() == 200){ int total = connection.getContentLength(); progressDialog.setMax(total); InputStream is = connection.getInputStream();//獲得socket輸入流 File file = new File(filePath); FileOutputStream fos = new FileOutputStream(file);//file輸出流 byte[] buffer = new byte[1024]; int len; int progress = 0; while((len = is.read(buffer)) != -1){ fos.write(buffer); progress += len; progressDialog.setProgress(progress); } fos.flush(); is.close(); fos.close(); connection.disconnect(); return file; } return null; }
這是一個執行下載任務的類,用來從服務器下載更新用的apk,結果下載成功後,跳轉到安裝頁面,卻提示解析包時出現錯誤,這樣的錯誤真是讓人頭疼,跟代碼無關,沒有頭緒。
後來發現有類似情況http://bbs.csdn.net/topics/380117090?page=1#post-397007671
但是沒有解決方案,對比發現下載來的apk和服務器文件夾裡的apk大小有些差別,我就嘗試把每次讀取的byte[]做小一點,也就是
byte[] buffer = new byte[1024];
這行代碼,把1024改成了128,又改成了64,結果就沒問題了。
意外的收貨。你也遇到類似問題的話嘗試一下,good luck。
作者:jason0539
微博:http://weibo.com/2553717707
博客:http://blog.csdn.net/jason0539(轉載請說明出處)
寫在前面筆者近來在學習Android自定義View,收集了一些不算復雜但又“長得”還可以的自定義View效果實現,之前分享過兩個效果:一個水平的進
使用EditText的addTextChangedListener(TextWatcher watcher)方法對EditText實現監聽,TextWatcher是一個接
動畫在我們實際開發中占有很重要的地位,一個優秀的動畫能為我們的app應用增色很多,同時一個優秀的動畫銜接能夠增加我們app的邏輯展示。在Android系統中,系統給我們
Activity是最基本的模塊,一般稱之為活動,在應用程序中,一個Activity通常就是一個單獨的屏幕。簡單理解,Activity代表一個用戶所能看到的屏幕,主要用於處