我在做什么:
我正在使用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?
答案 0 :(得分:0)
我建议您在GoogleApiClient#connect()
中致电onStart()
,然后在GoogleApiClient#disconnect()
中致电onStop()
。如果您在Nearby.Messages.subscribe()
中呼叫onConnect()
,则每次创建片段时(例如,在更改方向时),您最终都会订阅。因此,您应该在Nearby.Messages.unsubscribe()
中致电onPause()
。
是的,您确实需要使用runOnUiThread()
,因此您不会同时修改资源。
我不确定你的意思"它只允许我将recyclerview适配器设置为LayoutManager作为child"的所有者。你能澄清一下吗?事实上,你可以问一下这是一个单独的问题(将多个问题放在一起并不是很好的StackOverflow礼仪)。