2012-12-27 86 views
0

在Android模擬器中請求位置更新後,我的應用停止工作。這隻發生在3.0以上的android版本上。 任何類似以下的代碼:Android:在Android模擬器中請求位置更新後,應用停止工作

lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener); 

該應用停止工作。這是模擬器中這些版本的常規行爲還是我做錯了什麼?

更多信息:如果我爲Android 2.3或更低版本啓動模擬器,正確捕獲異常。這在其他版本中沒有發生。

12-27 19:17:59.183: W/dalvikvm(640): threadid=1: thread exiting with uncaught exception (group=0x40a13300) 
12-27 19:17:59.253: E/AndroidRuntime(640): FATAL EXCEPTION: main 
12-27 19:17:59.253: E/AndroidRuntime(640): android.os.NetworkOnMainThreadException 
12-27 19:17:59.253: E/AndroidRuntime(640):  at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117) 
12-27 19:17:59.253: E/AndroidRuntime(640):  at java.net.InetAddress.lookupHostByName(InetAddress.java:385) 
12-27 19:17:59.253: E/AndroidRuntime(640):  at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236) 
12-27 19:17:59.253: E/AndroidRuntime(640):  at java.net.InetAddress.getAllByName(InetAddress.java:214) 
12-27 19:17:59.253: E/AndroidRuntime(640):  at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137) 
12-27 19:17:59.253: E/AndroidRuntime(640):  at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164) 
12-27 19:17:59.253: E/AndroidRuntime(640):  at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119) 
12-27 19:17:59.253: E/AndroidRuntime(640):  at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360) 
12-27 19:17:59.253: E/AndroidRuntime(640):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555) 
12-27 19:17:59.253: E/AndroidRuntime(640):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487) 
12-27 19:17:59.253: E/AndroidRuntime(640):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465) 
12-27 19:17:59.253: E/AndroidRuntime(640):  at com.rahul.places.AddNewLocation.getUrlArray(AddNewLocation.java:147) 
12-27 19:17:59.253: E/AndroidRuntime(640):  at com.rahul.places.AddNewLocation.access$6(AddNewLocation.java:139) 
12-27 19:17:59.253: E/AndroidRuntime(640):  at com.rahul.places.AddNewLocation$2.onClick(AddNewLocation.java:69) 
12-27 19:17:59.253: E/AndroidRuntime(640):  at android.view.View.performClick(View.java:4084) 
12-27 19:17:59.253: E/AndroidRuntime(640):  at android.view.View$PerformClick.run(View.java:16966) 
12-27 19:17:59.253: E/AndroidRuntime(640):  at android.os.Handler.handleCallback(Handler.java:615) 
12-27 19:17:59.253: E/AndroidRuntime(640):  at android.os.Handler.dispatchMessage(Handler.java:92) 
12-27 19:17:59.253: E/AndroidRuntime(640):  at android.os.Looper.loop(Looper.java:137) 
12-27 19:17:59.253: E/AndroidRuntime(640):  at android.app.ActivityThread.main(ActivityThread.java:4745) 
12-27 19:17:59.253: E/AndroidRuntime(640):  at java.lang.reflect.Method.invokeNative(Native Method) 
12-27 19:17:59.253: E/AndroidRuntime(640):  at java.lang.reflect.Method.invoke(Method.java:511) 
12-27 19:17:59.253: E/AndroidRuntime(640):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
12-27 19:17:59.253: E/AndroidRuntime(640):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
12-27 19:17:59.253: E/AndroidRuntime(640):  at dalvik.system.NativeStart.main(Native Method) 
+0

也發佈logcat。 –

+0

請檢查日誌貓 – rahul

+0

根據logcat,您在主線程上聯網,您必須在後臺線程上執行此操作。你在AddNewLocation.java的第147行調用哪些代碼? – Tomik

回答

0

這是預期的。 Android在處理更新版本的UI線程方面要嚴格得多。

當位置更新可用時(即在onLocationChanged()方法中)時,解決方案是使用handler更改UI線程上的UI。

相關問題