我正在开发一个Android应用程序,并且在整个开发周期中一直在使用Git。现在,我想构建并发布实验性功能,供人们试用和安装,同时仍将原始,稳定的应用程序安装在其设备上。
现在,这意味着我需要使用不同的包名称,这将更改开发项目中的一些基本文件。我还想有一个单独的图标,以清楚地区分应用程序。
我不习惯Git,不知道该采取哪种方法:我应该创建一个实验分支,当我想做一些实验室工作时该分支从我分支出来,还是应该将此实验工作作为单独的git-repo保留?
无论哪种方式,我的实际流程都存在一些问题。
目标
问题
代码中没有任何内容可以侦听和/或应对蓝牙连接状态更改做出反应。
问题体现在使用 BroadcastReceivers 上,而 BroadcastReceivers 又使用意图启动 Activity。由于某种原因,活动在其生命周期中不断运行,产生新窗口,即使蓝牙连接的唯一变化是BluetoothAdapterProperties:CONNECTION_STATE_CHANGE
我仅在装有 Android N 的 Nexus 6P 上对此进行了测试。我还不知道此实现对任何其他设备意味着什么。但我至少需要让它在一台设备上运行。
更新
我做了相当多的实验,发现如果我不在AndroidManifest中注册BroadcastReceiver,调用onDestroy的问题就会消失。但是,我希望能够对蓝牙连接设备做出反应,以便我可以启动我的活动,然后处理输入。如果每次新设备连接/断开时活动都会被破坏,那么这根本不起作用。如果 BroadcastReceiver 已经在运行,那么让 BroadcastReceiver 完成该活动的原因是什么?我可以控制该行为吗?
更新2
我还可以得出结论,使用此方法禁用静态声明的 BroadcastReceiver /sf/answers/457055581/不会改善情况。一旦 Manifest-BroadcastReceiver 从 Android 捕获 ACL_CONNECTED 意图并启动我的自定义活动,当连接状态发生变化时(通常就在 ACL_DISCONNECTED 之前),它就会无情地调用 onDestroy 。我是否在清单中声明了 ACL_DISCONNECTED 并不重要。只要我让接收器侦听 ACL_CONNECTED 意图并基于此启动我的 Activity,当连接状态发生变化时就会调用 onDestroy。太令人沮丧了。
显现
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.VIBRATE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter> …Run Code Online (Sandbox Code Playgroud)