Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MqttAndroidClient-onFailure 问题:_Android_Android Asynctask_Mqtt_Paho - Fatal编程技术网

MqttAndroidClient-onFailure 问题:

MqttAndroidClient-onFailure 问题:,android,android-asynctask,mqtt,paho,Android,Android Asynctask,Mqtt,Paho,为什么我可以通过mainActivity连接到服务器,但不能通过片段连接到服务器 安装程序 程序1-工作。。。 现在,我有两个程序。 第一个称为mqtt_test,它包括一个main活动、一个按钮和连接类mqtt。因此,没有碎片 有了这个程序,我可以连接到我的服务器,订阅和接收消息 第一程序代码 程序2-不起作用 在我的第二个程序中,我使用了几乎相同的代码。然而,我正在为未来的业务使用片段。在一些片段中是按钮,它们调用正确的方法。 如果我按下按钮,就会调用正确的方法,就像在第一个程序中一样。 但

为什么我可以通过mainActivity连接到服务器,但不能通过片段连接到服务器

安装程序 程序1-工作。。。 现在,我有两个程序。 第一个称为mqtt_test,它包括一个main活动、一个按钮和连接类mqtt。因此,没有碎片

有了这个程序,我可以连接到我的服务器,订阅和接收消息

第一程序代码 程序2-不起作用 在我的第二个程序中,我使用了几乎相同的代码。然而,我正在为未来的业务使用片段。在一些片段中是按钮,它们调用正确的方法。 如果我按下按钮,就会调用正确的方法,就像在第一个程序中一样。 但是程序跳过了异步任务。OnSucces或onFailure永远不会被调用

IMqttToken token = client.connect(null, new IMqttActionListener() {
                @Override
                public void onSuccess(IMqttToken asyncActionToken) {
                    // connected
                    Log.d(TAG_CONNECTION, "onSuccess");
                    connectionListener.connected(true);
                    client.setCallback(new MqttCallback() {
                        @Override
                        public void connectionLost(Throwable cause) {
                            Log.d(TAG_CONNECTION, "connectionLost: ");
                        }

                        @Override
                        public void messageArrived(String topic, MqttMessage message) throws Exception {
                            Log.d(TAG_CONNECTION, "messageArrived: Message: " + message.toString() + " with topic: " + topic);
                        }

                        @Override
                        public void deliveryComplete(IMqttDeliveryToken token) {
                            Log.d(TAG_CONNECTION, "deliveryComplete: ");
                        }
                    });
                }

                @Override
                public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
                    Log.d(TAG_CONNECTION, "onFailure");
                    connectionListener.connected(false);
                    Log.d(TAG_CONNECTION, exception.getMessage());

                }
            });
然后我通过一个新线程调用了connect方法:

@Override
    public void doSmth() {
        new Thread(new Runnable() {
            public void run() {
                // a potentially  time consuming task
                mqttConnection.connect();
            }
        }).start();

    }
最后我得到了一个答案:
D/CONNECTION:无法启动服务org.eclipse.paho.android.service.MqttService

我不明白为什么这样不行。也许你有一些意见

需要明确的是:两个程序都具有相同的权限:

<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

假设 我想,我必须使用更多的简易程序来解决这个问题

输入/链接 如果你能分享一些链接,那就太棒了。在最好的情况下,举一些例子。我只找到在单个MainActivity中运行的示例。

错误

D/CONNECTION: cannot start service org.eclipse.paho.android.service.MqttService
可能表示该条目

<service android:name="org.eclipse.paho.android.service.MqttService">
</service>

在AndroidManifest.xml中缺少

<service android:name="org.eclipse.paho.android.service.MqttService">
</service>