tokudu / AndroidPushNotificationsDemo

A example of an android app that receives push notifications using MQTT.
http://tokudu.com/2010/how-to-implement-push-notifications-for-android
1.05k stars 511 forks source link

NetworkOnMainThreadException with newer Android versions #1

Open ened opened 11 years ago

ened commented 11 years ago
12-05 13:02:04.201: ERROR/com.app.service.PushService(5696): MqttException
        com.ibm.mqtt.MqttException
        at com.ibm.mqtt.MqttBaseClient.doConnect(Unknown Source)
        at com.ibm.mqtt.MqttBaseClient.connect(Unknown Source)
        at com.ibm.mqtt.MqttClient.connect(Unknown Source)
        at com.ibm.mqtt.MqttClient.connect(Unknown Source)
        at com.app.service.PushService$MQTTConnection.<init>(PushService.java:446)
        at com.app.service.PushService.connect(PushService.java:284)
        at com.app.service.PushService.reconnectIfNecessary(PushService.java:378)
        at com.app.service.PushService.onStartCommand(PushService.java:191)
        at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2490)
        at android.app.ActivityThread.access$1900(ActivityThread.java:130)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1292)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:4745)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
        at dalvik.system.NativeStart.main(Native Method)
        Caused by: android.os.NetworkOnMainThreadException
        at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
        at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
        at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
        at java.net.InetAddress.getByName(InetAddress.java:289)
        at java.net.InetSocketAddress.<init>(InetSocketAddress.java:105)
        at java.net.InetSocketAddress.<init>(InetSocketAddress.java:90)
        at com.ibm.mqtt.j2se.MqttJava14NetSocket.<init>(Unknown Source)
        at com.ibm.mqtt.j2se.MqttJavaNetSocket.setConnection(Unknown Source)
        at com.ibm.mqtt.Mqtt.tcpipConnect(Unknown Source)

Seems to happen on JB+ now.

nocb commented 11 years ago

same to you

lovebing commented 8 years ago

To solve this problem, you need to use a new thread to connect mqtt server

hexige commented 6 years ago

In ur pushService,start a new thread to do sth about mqtt.