连接或断开蓝牙设备后,Android会重新启动。

3

当Android移动应用程序连接或断开蓝牙设备时,它总是重新启动。我需要做的还有什么?请告诉我。


你不需要发表任何评论,但是查看logcat并了解它的崩溃情况会对你有帮助。我们无法猜出你做错了什么,因为许多其他蓝牙应用程序都可以正常工作,但你一定做错了某些事情。 - 323go
展示你的代码崩溃了。 - joel goldstick
好的,我遇到了同样的问题。以下是链接:http://stackoverflow.com/questions/25734849/android-mobile-app-always-get-restarted-once-it-is-connected-or-disconnected-to - Sidle Ciel
嗨,@323go。我还是错了。根据上面的解决方案,你可以看到YouTube也有同样的情况。 - Sidle Ciel
嗨,@SidleCiel,你能找到这个问题的解决方案吗? - kumar Sudheer
2个回答

13
这是设计上的考虑。Android 会在任何配置变更事件中重新启动(重建)活动,以确保应用适应新的情况:
处理运行时变更 - API 指南
与方向改变、硬件或软件键盘改变类似,蓝牙连接/断开也是一种相似的配置变更事件。
您可以通过在应用程序中处理配置变更事件来避免应用程序重启:

android:configChanges = "keyboard|keyboardHidden" 属性添加到您的 AndroidManifest.xml 中:

<activity android:name=".MyActivity"
    android:configChanges="keyboard|keyboardHidden"
    android:label="@string/app_name">

在您的活动中实现onConfigurationChanged()方法:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
}

在这里可以看到优秀的答案:


在这里看到了很棒的答案:)这是一个非常好的答案!我漏掉了“keyboard”标志!谢谢。 - bojan
非常感谢。我在这上面浪费了一天半的时间。 - Kibi
你是上天派来的恩赐!非常感谢 +1,必须标记为答案! - Ariel Yust

1
重新唤起一个旧话题,有一些蓝牙设备 - 由于某种不明原因 - 除了键盘配置之外还会进行其他配置更改。在这种情况下,请尝试在所需的活动中的清单中添加以下行:
android:configChanges="keyboard|keyboardHidden|navigation"

这可能已经足够了!

我还建议查看https://developer.android.com/guide/topics/manifest/activity-element#config,在子主题android:configChanges中。 列出了设备可能进行的所有配置更改。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接