Android WearableListenerService必须被调用两次才能接收消息

菲利普

我正在从Wear手持设备向我的服务发送一条消息。第一次单击掌上电脑上的按钮只是调用服务的onCreate方法,第二次服务也收到消息。我不知道问题所在。

这是我的穿戴部分:

    @Override
    public void onClick(View v)
    {
        final PendingResult<NodeApi.GetConnectedNodesResult> nodes1 = Wearable.NodeApi.getConnectedNodes(mApiClient);
        nodes1.setResultCallback(new ResultCallback<NodeApi.GetConnectedNodesResult>()
        {
            @Override
            public void onResult(NodeApi.GetConnectedNodesResult result)
            {
                for (int i = 0; i < result.getNodes().size(); i++)
                {
                    Node node = result.getNodes().get(i);

                    PendingResult<MessageApi.SendMessageResult> messageResult = Wearable.MessageApi.sendMessage(mApiClient, node.getId(), "/OPEN;"
                            + cnt, null);
                    messageResult.setResultCallback(new ResultCallback<MessageApi.SendMessageResult>()
                    {
                        @Override
                        public void onResult(MessageApi.SendMessageResult sendMessageResult)
                        {
                            Status status = sendMessageResult.getStatus();
                            Log.d("", "##Status: " + status.toString());
                            if (status.getStatusCode() != WearableStatusCodes.SUCCESS)
                            {
                                //not getting there, always success
                            }
                        }
                    });
                }
            }
        });
    }

我有以下WearableListenerService:

public class DataLayerListenerService extends WearableListenerService implements ConnectionCallbacks, OnConnectionFailedListener
{
    private GoogleApiClient mApiClient;
    private SharedPreferences prefs;

    @Override
    public void onCreate()
    {
        Log.d("", "##DataService created");
        super.onCreate();
        if (null == mApiClient)
        {
            mApiClient = new GoogleApiClient.Builder(this).addApi(Wearable.API).addConnectionCallbacks(this).addOnConnectionFailedListener(this)
                    .build();
        }

        if (!mApiClient.isConnected())
        {
            mApiClient.connect();
            Log.d("", "##Api connecting");
        }
    }

    @Override
    public void onDestroy()
    {
        Log.d("", "##DataService destroyed");
        if (null != mApiClient)
        {
            if (mApiClient.isConnected())
            {
                mApiClient.disconnect();
            }
        }
        super.onDestroy();
    }

    @Override
    public void onMessageReceived(MessageEvent messageEvent)
    {
        Log.d("", "##DataService received " + messageEvent.getPath());
        super.onMessageReceived(messageEvent);
        if (messageEvent.getPath().contains("/OPEN;"))
        {
            // only if called twice :(
        }
    }

    @Override
    public void onDataChanged(DataEventBuffer dataEvents)
    {
        Log.d("", "##DataService Data changed");
    }


    @Override
    public void onConnectionFailed(ConnectionResult arg0)
    {
    }

    @Override
    public void onConnected(Bundle arg0)
    {
    }

    @Override
    public void onConnectionSuspended(int arg0)
    {
    }
}

也许我还应该提到,在服务被销毁之前(单击事件发生几秒钟后),我只需要单击两次按钮。所以..实际上这是发生了什么:

穿点击

服务创建

穿点击

服务onMessageReceived

穿点击

服务onMessageReceived

//等待几秒钟

服务破坏

穿点击

服务创建

穿点击

服务onMessageReceived

希望这很清楚:-)

提前致谢!!

用户名

我想我可能已经解决了Phillip Adam-尝试在对超类进行调用的onMessageReceived()方法中注释掉服务中的这一行。这适合我。:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

必须单击两次以调用edittext android的onclick方法

来自分类Dev

必须单击两次按钮才能在Android Studio中工作

来自分类Dev

必须单击两次按钮才能在Android Studio中工作

来自分类Dev

Android oncreateview被调用两次

来自分类Dev

片段上的onstart()在android中被调用了两次

来自分类Dev

android-onOptionsItemSelected方法调用了两次

来自分类Dev

片段上的onstart()在android中被调用了两次

来自分类Dev

android activity的onCreate被调用了两次

来自分类Dev

android两次调用相同的对话框

来自分类Dev

Android DatePicker 调用两次后 TextView 更新

来自分类Dev

必须加载两次数据才能在Android中刷新WebView

来自分类Dev

必须加载两次数据才能使WebView在Android中刷新

来自分类Dev

Android,setSpan两次?

来自分类Dev

使:hover在Android上悬停需要两次单击才能打开链接

来自分类Dev

我的 Android 按钮需要点按两次才能工作

来自分类Dev

Android BroadcastReceiver onReceive()在android 4.0上被调用了两次

来自分类Dev

Android Wear-在没有WearableListenerService的情况下从Wear接收消息?

来自分类Dev

Android ListView两次添加项目

来自分类Dev

SIP在Android上注册两次

来自分类Dev

Android凌空两次发送数据

来自分类Dev

Android Makefile链接两次

来自分类Dev

Android:两次单击“后退”按钮?

来自分类Dev

Android ExpandableListView填充两次

来自分类Dev

Android NotificationListenerService onNotificationPost触发两次

来自分类Dev

Android setOnCheckedChangeListener运行两次

来自分类Dev

Android Studio:WebView加载两次

来自分类Dev

在Android View中点按两次

来自分类Dev

在Android中比较两次

来自分类Dev

Android FragmentTransaction提交两次

Related 相关文章

热门标签

归档