具有Nearby Messages API的GoogleApiClient的多个实例

时间:2015-11-30 05:56:56

标签: android eddystone google-nearby

我在做什么:

我正在使用Eddystone和Google Nearby Messages API。

我在onCreateView()中连接到Google API以启动对象并调用mGoogleApiClient.connect(); 然后在GoogleAPI onConnected()中,我正在呼叫Nearby.Messages.subscribe()来收听消息。

因此,mGoogleApiClient"已连接","已成功订阅"正如我在Log。中看到的那样,目前正在同时发生3-4次。

我希望它只将connect(), subscribe()实例化一次&避免与Google建立多重连接。

onFound()中,我正在运行runOnUiThread(thread) 解析我的json-string附件,添加到arraylist,将arraylist添加到自定义适配器,将适配器设置为recyclerview

(我在onFound() runOnUiThread(){"Z":[{"a":"text","b":"text","c":"text","d":"text","e":"text","f":"text" }]} 处理的每个附件:

runOnUiThread()

问题是,

那么,我真的需要使用connect()只允许我将recyclerview适配器设置为LayoutManager作为child的所有者吗?我怎么能做到这一点?

如何避免多个subscribe()onResume()实例?

如何避免重复的附件显示在我的列表中?

如何在Inspector insp = ((MailItem)Response).GetInspector; ((_Inspector)insp).Activate(); 时使用自定义适配器恢复recyclerView?

1 个答案:

答案 0 :(得分:0)

我建议您在GoogleApiClient#connect()中致电onStart(),然后在GoogleApiClient#disconnect()中致电onStop()。如果您在Nearby.Messages.subscribe()中呼叫onConnect(),则每次创建片段时(例如,在更改方向时),您最终都会订阅。因此,您应该在Nearby.Messages.unsubscribe()中致电onPause()

是的,您确实需要使用runOnUiThread(),因此您不会同时修改资源。

我不确定你的意思"它只允许我将recyclerview适配器设置为LayoutManager作为child"的所有者。你能澄清一下吗?事实上,你可以问一下这是一个单独的问题(将多个问题放在一起并不是很好的StackOverflow礼仪)。