1

我在做什么:

我将 Eddystone 与 Google Nearby Messages API 一起使用。

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

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

我希望它只实例化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()仅允许我将 recyclerview 适配器设置为 LayoutManager 作为 child 的所有者吗?我还能如何做到这一点?

如何避免多个connect()实例subscribe()

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

何时使用自定义适配器恢复 recyclerView onResume()

4

1 回答 1

0

我建议你先打电话GoogleApiClient#connect()onStart()然后再打电话GoogleApiClient#disconnect()onStop()如果您正在调用Nearby.Messages.subscribe()in onConnect(),您最终会在每次创建片段时订阅(例如,在方向改变时)。因此,您应该调用Nearby.Messages.unsubscribe().onPause()

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

我不确定“这只允许我将 recyclerview 适配器设置为 LayoutManager 作为孩子的所有者”是什么意思。你能澄清一下吗?实际上,您能否将其作为一个单独的问题提出来(将多个问题混为一谈是不好的 StackOverflow 礼仪)。

于 2015-12-14T23:18:34.247 回答