-3

I am writing an App in which i am allowing user to enter their details, but i am getting an error, whenever user click on Submit Button, error says : Unfortunately App has Stopped

android.os.NetworkOnMainThreadException

Logcat Says:

04-11 14:25:07.297: E/AndroidRuntime(971): FATAL EXCEPTION: main
04-11 14:25:07.297: E/AndroidRuntime(971): android.os.NetworkOnMainThreadException
04-11 14:25:07.297: E/AndroidRuntime(971):  at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
04-11 14:25:07.297: E/AndroidRuntime(971):  at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84)
04-11 14:25:07.297: E/AndroidRuntime(971):  at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
04-11 14:25:07.297: E/AndroidRuntime(971):  at libcore.io.IoBridge.connect(IoBridge.java:112)
04-11 14:25:07.297: E/AndroidRuntime(971):  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
04-11 14:25:07.297: E/AndroidRuntime(971):  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)
04-11 14:25:07.297: E/AndroidRuntime(971):  at java.net.Socket.connect(Socket.java:842)
04-11 14:25:07.297: E/AndroidRuntime(971):  at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:119)
04-11 14:25:07.297: E/AndroidRuntime(971):  at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:144)
04-11 14:25:07.297: E/AndroidRuntime(971):  at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
04-11 14:25:07.297: E/AndroidRuntime(971):  at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
04-11 14:25:07.297: E/AndroidRuntime(971):  at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
04-11 14:25:07.297: E/AndroidRuntime(971):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
04-11 14:25:07.297: E/AndroidRuntime(971):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
04-11 14:25:07.297: E/AndroidRuntime(971):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
04-11 14:25:07.297: E/AndroidRuntime(971):  at com.erachnida.restaurant.versionoct.cart.RegistrationActivity.getHttpPost(RegistrationActivity.java:183)
04-11 14:25:07.297: E/AndroidRuntime(971):  at com.erachnida.restaurant.versionoct.cart.RegistrationActivity.SaveData(RegistrationActivity.java:135)
04-11 14:25:07.297: E/AndroidRuntime(971):  at com.erachnida.restaurant.versionoct.cart.RegistrationActivity$1.onClick(RegistrationActivity.java:49)
04-11 14:25:07.297: E/AndroidRuntime(971):  at android.view.View.performClick(View.java:4202)
04-11 14:25:07.297: E/AndroidRuntime(971):  at android.view.View$PerformClick.run(View.java:17340)
04-11 14:25:07.297: E/AndroidRuntime(971):  at android.os.Handler.handleCallback(Handler.java:725)
04-11 14:25:07.297: E/AndroidRuntime(971):  at android.os.Handler.dispatchMessage(Handler.java:92)
04-11 14:25:07.297: E/AndroidRuntime(971):  at android.os.Looper.loop(Looper.java:137)
04-11 14:25:07.297: E/AndroidRuntime(971):  at android.app.ActivityThread.main(ActivityThread.java:5039)
04-11 14:25:07.297: E/AndroidRuntime(971):  at java.lang.reflect.Method.invokeNative(Native Method)
04-11 14:25:07.297: E/AndroidRuntime(971):  at java.lang.reflect.Method.invoke(Method.java:511)
04-11 14:25:07.297: E/AndroidRuntime(971):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
04-11 14:25:07.297: E/AndroidRuntime(971):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
04-11 14:25:07.297: E/AndroidRuntime(971):  at dalvik.system.NativeStart.main(Native Method)
Jimmy Hill
  • 216
  • 2
  • 5
  • 15
  • In android codes which are taking too much time to run should not be done on the main thread.So move your such codes into AsyncTask or any other methods to do it on another thread. – vinoth Apr 11 '13 at 09:05

2 Answers2

4

You can not call Network Operation in Main Thread in higher version of Android. So Take one worker Thread or asynchronous task to perform Network operation Like Calling Webservice, Downloading Image and other.

This does not allow to make android application more responsive and smooth

Tofeeq Ahmad
  • 11,935
  • 4
  • 61
  • 87
0

It happens when you make network connections on your main thread on honeycomb and higher versions. You should use AsyncTask to do all your Network operations. AsyncTask does your operations on the background thread. Click here and here to get an idea about AsyncTask.

Vikram Gupta
  • 6,496
  • 5
  • 34
  • 47