我有以下代码启动活动,代码用于当用户点击Android设备中的菜单按钮时出现的子菜单,问题是当单击按钮时,新活动开始失去以前形成的蓝牙连接!
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Intent serverIntent = null;
Intent PassIntent;
Intent PassIntent1;
switch (item.getItemId()) {
/*case R.id.home:
// Launch the DeviceListActivity to see devices and do scan
serverIntent = new Intent(this, engineStarter.class);
startActivity(serverIntent);
return true;*/
/*case R.id.insecure_connect_scan:
// Launch the DeviceListActivity to see devices and do scan
serverIntent = new Intent(this, DeviceListActivity.class);
startActivityForResult(serverIntent, REQUEST_CONNECT_DEVICE_INSECURE);
return true;*/
/*case R.id.discoverable:
// Ensure this device is discoverable by others
ensureDiscoverable();
return true;*/
case R.id.setpassword:
PassIntent = new Intent(this, SetPassword.class);
startActivity(PassIntent);
return true;
case R.id.home:
// Launch the DeviceListActivity to see devices and do scan
serverIntent = new Intent(this, engineStarter.class);
startActivity(serverIntent);
return true;
}
return false;
}
答案 0 :(得分:1)
您有两种选择:
1-将您的活动的启动模式更改为android:launchMode="singleTask"
,因此每次拨打startActivity
时都不会创建新实例
2-在Bluetooth
service
个连接
另一种可能的解决方案,但可能不是优雅的解决方案,是定义一个自定义application
类,您可以在其中维护Bluetooth
连接,在这种情况下,applicationContext
连接将紧密到{{1} }}
答案 1 :(得分:0)
另一种方法是保持相同的Activity,但将新的fragments加载到替换当前片段的活动中。使用FragmentManager时,您可以将新片段推送到堆栈以向前导航并弹出它们以向后导航。这将允许您导航内容并保持蓝牙连接。