Android中网络编程出错
生活随笔
收集整理的這篇文章主要介紹了
Android中网络编程出错
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在android 2.3上設計的下載程序,在android 4.0上運行時報android.os.NetworkOnMainThreadException異常,原來在4.0中,訪問網絡不能在主程序中進行,有兩個方法可以解決。
一個是在主程序中增加:
// 詳見StrictMode文檔 StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() .detectDiskReads() .detectDiskWrites() .detectNetwork() // or .detectAll() for all detectable problems .penaltyLog() .build()); StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder() .detectLeakedSqlLiteObjects() .detectLeakedClosableObjects() .penaltyLog() .penaltyDeath() .build());?另一種是啟動線程執行下載任務:
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 啟動線程執行下載任務 new Thread(downloadRun).start(); } /** * 下載線程 */ Runnable downloadRun = new Runnable(){ @Override public void run() { // TODO Auto-generated method stub updateListView(); } };
?Android中SharedPreferences的模式
MODE_MULTI_PROCESS這個值是一個標志,在Android 2.3及以前,這個標志位都是默認開啟的,允許多個進程訪問同一個SharedPrecferences對象。而以后的Android版本,必須通過明確的將MODE_MULTI_PROCESS這個值傳遞給mode參數,才能開啟多進程訪問。
我們在獲得SharedPreferences的時候,需要判斷一下SDK的版本號:
int __sdkLevel = Build.VERSION.SDK_INT; SharedPreferences __sp = $context.getSharedPreferences(SETTING_NAME, (__sdkLevel > Build.VERSION_CODES.FROYO) ? 4 : 0);
?
轉載于:https://www.cnblogs.com/renyuan/archive/2012/10/30/2746389.html
總結
以上是生活随笔為你收集整理的Android中网络编程出错的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 打开深蓝医生的国庆大礼包!
- 下一篇: 常见java考试题与面试题一