gpt4 book ai didi

java - 如何通过配置更改在 Android 上管理蓝牙连接?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:16:11 25 4
gpt4 key购买 nike

问题:
如何管理(连接、读取、写入、断开连接)通过配置更改持续存在的蓝牙连接?

首选与设备版本 2.2“Froyo”兼容的解决方案,使用 ActionBarSherlock .

问题...

  • BluetoothDeviceBluetoothSocket 都不能保留在onSaveState 中。

  • 为了keep my app responsive , 12 秒阻塞调用 BluetoothSocket.connect()必须在单独的线程上进行。启动 Runnable 是对长任务进行线程化的推荐方法,但它是试图在配置更改时恢复的噩梦。官方文档指出了三种不同的解决方案。

更新 1

  • 进一步的研究使我找到了 asyncTaskLoader , 但似乎只能在完成时更新 UI,而不能提供更新。

  • BluetoothHDP 示例使用服务。服务似乎专注于进程间通信以及在 Activity 生命周期之外持续存在的需要。我不需要这些功能中的任何一个。

更新 2

As pointed out by Reuben , Fragment.setRetainInstance(bool)已替换已弃用的 getLastNonConfigurationInstance()。在这一点上,最好的选择似乎是使用 setRetainInstance(true) 制作一个持久的非 UI fragment 。

最佳答案

我会通过使用处理蓝牙连接的Service 来解决这个问题,并使该服务返回给您的 Activity,如 this answer. 中所述。

然后,您可以使用 ASyncTask 来简单地显示/隐藏对话框,并在旋转时取消/重新启动 ASyncTasks,正如您提到的那样,这是由 Shelves Example 完成的。

服务并没有那么可怕,可能是解决您问题的最佳工具。

关于java - 如何通过配置更改在 Android 上管理蓝牙连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15465817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com