2012-12-27 55 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。

相关问题