1,解析xml時的NetWorkOnMainThread問題
代碼:這里要注意的點就是在訪問服務器網絡時,不能將InputStream直接返回,因為若直接返回給主線程操作,很可能子線程的InputStream還在獲取字節流,這時候就會導致這個UI線程訪問網絡異常,所以不能直接返回這個InputStream,直接在子線程里
操作這個輸入流,然后將操作的結果返回。
private class AsyncTask_ConnVersion extends AsyncTask<String, Void, ConnData> { @Override protected ConnData doInBackground(String... params) { URL serviceAddrUrl; HttpURLConnection conn; String urlStr=params[0]; try { serviceAddrUrl = new URL(urlStr); conn = (HttpURLConnection) serviceAddrUrl.openConnection(); conn.connect(); int len=conn.getContentLength(); InputStream in=conn.getInputStream(); HashMap<String, String> hashMap=new ParseXmlService().parseXml(in); connDataInfo=new ConnData(hashMap, len); //關閉連接 conn.disconnect(); return connDataInfo; } catch (Exception e) { e.printStackTrace(); } return null; } }
2,FileNotFound
apk在服務器上找不到,路徑都對就是文件無法訪問到,這個問題我是看別人解決的:URL請求的具體實現,網上各種各樣,沒有什么好糾結的了。URL路徑完全沒有問題,替換成同目錄下的其他類型文件,可以找到文件,唯獨找不到文件。
找了幾個小時,悄然發現,原來和IIS的設置有關系,我這邊使用的測試服務器為IIS,IIS默認限制了apk類型文件的下載,所以輸入流拿不到文件數據,提示“找不到文件”。
最終解決辦法:
1、在管理工具里打開Internet 信息服務(IIS)管理器。然后選擇需要配置的網站。
2、右側的界面中會顯示該網站的所有功能配置,我們選擇並點擊進入“MIME類型”。
3、在右側的操作區選擇點擊“添加”MIME。
4、在彈出的添加窗口里的文件擴展名輸入:APK
在MIME類型輸入:application/vnd.android.package-archive
按確定。
3,版本更新時已經下載好后的apk無法安裝,安裝不上,代碼沒有問題,后來發現必須以發布的方式運行原始的apk,然后更新下下來最新的apk進行安裝。即要導出當前測試的apk而不能直接在eclipse上測試更新安裝這個。