Android:屏幕旋转、销毁和服务难题

2023-11-29

我修改了 SDK 演示中的蓝牙聊天示例,以便能够控制 arduino 供电的蓝牙 LED 矩阵。使用聊天程序,我可以通过蓝牙向显示器发送消息。但我有一个问题。我已经完成了两种屏幕布局,纵向和横向。这样我就可以让界面占据手机上的大部分空间,无论方向如何。

问题是,如果旋转手机,则会调用 OnDestroy() 来重新加载新布局(横向或纵向)。在 OnDestroy() 例程中,我还会销毁蓝牙链接(如果已建立):

   public void onDestroy() {
        super.onDestroy();
        // Stop the Bluetooth chat services
        if (mChatService != null)
            mChatService.stop();
        if (D)
            Log.e(TAG, "--- ON DESTROY ---");
    }

阅读此处的其他帖子,我发现您可以通过在清单中添加“android:configChanges=”orientation””来防止服务停止。这样做,当我旋转屏幕时,与显示器的蓝牙链接不再终止,但现在屏幕不会在横向模式下重新绘制。

为了解决这个问题,我正在考虑删除“if mchatservice...”部分,该部分将终止连接,但当应用程序最终退出时,我仍然需要运行代码。

有没有办法在旋转时重绘屏幕而不终止连接?如果没有,我想我总是可以将服务代码移至 OnPause() 事件,但是如果应用程序失去前景焦点,这将终止连接。

还有其他方法吗?

Thanks.


如果您将“android:configChanges="orientation"”添加到清单中以防止活动被销毁和重新创建,您可能需要实现该方法:

public void onConfigurationChanged(Configuration newConfig)

每次系统配置更改时(即,当您旋转手机并更改方向时)都会执行此方法。在此方法中,您可以为您的活动重新应用新的布局:

public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);

    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        Log.e(TAG, "ORIENTATION_LANDSCAPE");
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
        Log.e(TAG, "ORIENTATION_PORTRAIT");
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android:屏幕旋转、销毁和服务难题 的相关文章

  • 如何自定义 Firebase 身份验证 ui

    我正在使用 Firebase Auth Ui 进行号码验证 我有一些要求 需要更改国家旋转器下拉项目的文本和背景颜色 我正在使用下面的样式 但它不会改变下拉菜单的背景颜色或项目的文本颜色 style name FirebaseUI Coun
  • Android - 如何使密封类扩展其他密封类?

    我的 UIState 有一个密封的界面 sealed interface UIState
  • Android Toast 消息不起作用

    我正在通过 Andengine 为 Android 开发游戏 我有 MainActivity 类和 GameScene 类 我在 GameActivity 中使用 Toast 消息 它正在发挥作用 Toast makeText this H
  • 由于现有相机用户,相机“0”的手电筒不可用

    我想创建一个应用程序 它有一个用于录制视频的按钮和另一个单独的切换按钮 用于在录制视频期间打开闪光灯 我已经使用camera2 API为最近的androids构建了相机应用程序 可以通过图像按钮访问 我将火炬模式设置为切换按钮 但这根本不起
  • animation.start() 或animation.startNow() 不会立即开始动画

    我有一个奇怪的问题 有时应该淡出我的控件 ImageButton 的动画不会立即启动 我使用淡出动画来隐藏它 然后在 myListener 的末尾 onAnimationEnd 中 我将新资源作为按钮上的图像 我的应用程序代码中的某处 An
  • 垂直 ViewPager 中的动画

    我需要垂直制作这个动画ViewPager https www youtube com watch v wuE 4jjnp3g https www youtube com watch v wuE 4jjnp3g 这是我到目前为止所尝试的 vi
  • Android 软键盘 - 禁用某些键

    我正在寻找一种使用内置软键盘并禁用某些键的方法 例如 如果用户不应该使用字母 f 因为在列表中该字母不存在 则该键应显示为灰色 想象一下 用户可以在文本框中键入文本以从列表中进行选择 该列表包含 ABC BCCD 床 如果用户输入 A 然后
  • Android:将图像裁剪为特定尺寸

    我的目的是让用户从图库中选择一张图像 然后进行裁剪活动 但是 我需要将定义裁剪蒙版的矩形锁定到某个尺寸 然后用户只需重新定位它即可显示图像的一部分 关于如何做到这一点有什么想法吗 Thanks T Intent intent new Int
  • 为什么我的地图视图上的叠加层没有显示?

    我按照 google hellomapview 教程中的说明进行操作 我得到了一个工作地图视图等 但是添加到地图中的两个项目没有显示 它们似乎在某个地方 因为点击指定位置会显示添加到项目中的消息 Edit 这是我的源代码 应该和google
  • 如何在启用抗锯齿的情况下旋转可绘制对象

    我需要将 ImageView 旋转几度 我通过子类化 ImageView 和重载来做到这一点onDraw Override protected void onDraw Canvas canvas canvas save canvas sca
  • “添加到 FragmentContainerView 的视图必须与 Fragment 关联”与 android 导航组件

    当导航组件切换到片段时 我收到 添加到 FragmentContainerView 的视图必须与片段关联 崩溃 这是什么原因造成的 我没有在任何地方看到提到这一点 并且花了一段时间才弄清楚 但在这种情况下 我试图在迁移到导航拱门组件时设置一
  • java.lang.AssertionError:CALL 'public final fun

    我正在尝试使用 jetPack Compose 制作一个项目 我拥有它工作所需的所有必要依赖项 但是当我运行我的应用程序时 它会抛出一个错误 我找不到解决方案 这是错误 java lang AssertionError CALL publi
  • eglCodecCommon:setVertexArrayObject:设置vao调试消息

    我的 Android Emulator API 28 logcat 被这样的消息搞得晕头转向 D eglCodecCommon setVertexArrayObject set vao to 1 1 0 0 D eglCodecCommon
  • 当类明显存在时,我收到 java.lang.NoClassDefFoundError

    当我尝试在运行时使用该库时 出现以下错误 java lang NoClassDefFoundError com google api client extensions android2 AndroidHttp 我已经将此库添加到我的项目中
  • 如何将AVFrame转换为glTexImage2D使用的纹理?

    如您所知 AVFrame 有 2 个属性 pFrame gt data pFrame gt linesize 当我从视频 sdcard test mp4 android平台 读取帧后 并将其转换为RGB AVFrame副 img conve
  • Android 导航组件 - 从“任何地方”/基本片段导航?

    我正在开发一个应用程序 它有一个奇怪的花招 可以在设备旋转时打开特定的片段 在实现 android 的导航组件之前 所需要的只是对当前活动的引用 并且可以在特定时刻向用户显示的任何内容之上执行手动片段事务 但是在转移到导航组件之后 我发现很
  • 如何在 LazyColumn 底部添加空白区域?

    我想添加 LazyColumn 的空白底部 并且我想允许用户调出底部元素 我怎样才能实现这个 Example LazyColumn modifier Modifier fillMaxWidth height 300 dp border 2
  • 以编程方式创建 FloatingActionButton(无需 xml)

    我很欣赏 Android 的 FloatingActionButton fab 功能 并希望在我的项目中的许多不同地方使用它们 现在 我有这样的东西 我有几个 xml 规范 除了 id 图标和 onclick 之外 所有这些规范都是相同的
  • 我想要有条件的登录导航,没有 MAIN 片段或按钮

    我正在使用 Android Jetpack 导航组件 实时数据和 Firebase 我希望工作流程就像用户打开应用程序时一样 然后根据登录 注销状态导航到登录 配置文件片段 而不需要任何主片段或按钮 请 我的应用程序中没有主要片段 用户启动
  • 从 Dropbox 下载文件并将其保存到 SDCARD

    现在我真的很沮丧 我想从 Dropbox 下载一个文件并将该文件保存到 SD 卡中 我得到的代码为 private boolean downloadDropboxFile String dbPath File localFile throw

随机推荐

  • Teams:Invoke-Webrequest 向 Teams 发送 base64 字符串 (png)

    我正在尝试将一个 png 格式的 base64 字符串发送到我们的团队频道 该频道具有 传入 Webhook 设置 消息已发送到频道 但没有显示图像 当我搜索此内容时 似乎无法将图像或任何其他类型的附件作为 base64 字符串发送到 Te
  • 在python中动态添加@property

    我知道我可以通过执行以下操作动态地将实例方法添加到对象 import types def my method self logic of method instance is some instance of some class inst
  • Win32 GUI 在调整大小时闪烁

    我有一个带有选项卡控件的 Win32 GUI 程序 每个选项卡都有一个列表视图控件 每当调整窗口大小时都会出现大量闪烁 我尝试过以下操作 在主 wndproc 中处理 WM ERASEBKGND 并返回 TRUE 没有效果 过滤掉事件循环中
  • 当UAC打开时,程序可以在没有管理员权限的情况下写入磁盘的根目录吗?

    如果我不是管理员并启动一个写入 C 某些文本文件的程序 在 Windows 7 或 Vista 中我是否需要管理员权限 我发现在 XP 中写入任何文件夹 包括 system32 都没有问题 但我不确定 NET 中的程序是否能够在没有管理员权
  • 与文本字段和日期选择器相关的问题

    我有一个与单击文本字段时隐藏和显示日期选择器视图相关的问题 实际上我有 2 个文本字段 这是我的问题图像 Problem 单击文本字段时日期选择器显示和隐藏 它应该在开始编辑时显示并在结束编辑时隐藏 当我们第一次点击 textfield 1
  • 在 LinearLayout 中动态创建多个 TextView

    我想创建多个TextView里面有一个LinearLayout 以下代码构建成功 但给出了NullPointerException在线上root addView t i public class MainActivity extends A
  • 创建通用 TypeScript 函数,为对象属性赋值

    我想创建一个简单的函数key特定对象的和value为相应的键并将新值分配给对象 像这样的东西 interface MyObject key1 string key2 number const object MyObject key1 abc
  • flex-grow 和 width 有什么区别?

    我最近开始使用 Flexbox 经常会出现需要在元素之间的主轴上分配空间的情况 我常常犹豫不决width and flex grow 例如 如果我希望一项测量 2 个测量 另一个测量 1 个测量 加起来为 100 我有两种选择 我可以设置w
  • UIScrollView 内的 UITextView 与 AutoLayout

    我试图将 UITextView 放置在带有 AutoLayout 的 UIScrollView 中 但没有成功 我尝试过的是 我将 UIScrollView 放置在 Storyboard 的主视图中 我将 UITextView 放置在 St
  • Libclang 的 python 绑定生成的 AST 无法解析 C++ 源代码中的某些标记

    我正在使用 Libclang 的 python 绑定 我基本上有两个疑问 我想知道我们如何解析既不是用户定义的也不是包含库的库函数 例如当我有以下源代码时 char a char malloc 4 Libclang 无法解析 malloc
  • 停止缓存 jQuery .load 响应

    我有以下代码对 URL 发出 GET 请求 searchButton click function inquiry load portal f searchBilling pid query val 但返回的结果并不总是能反映出来 例如 我
  • 当指针类型不同时如何生成编译错误?

    当两个指针 a 和 b 具有不同的基类型时 如何编写一个宏 CHECK a b 来生成编译错误 CHECK int 0 char 0 gt compilation error CHECK int 0 int 0 gt works 我正在寻找
  • 如何使用 mongodb 选择每个特定字段的记录数?

    我在 mongodb 中有一个文档集合 每个文档都有一个 组 字段 该字段引用拥有该文档的组 这些文件看起来像这样 group
  • Rcpp 警告:对“exp”的调用不明确

    我正在编写一个Rcpp代码 如下所示 Rcpp depends RcppArmadillo Rcpp depends BH Rcpp plugins cpp11 include
  • Viewpager 内的 Android 捏合缩放布局,左右填充

    我有一个带有左右填充的 viewpager 用于显示 viewpager 左右页面的预览 viewPager setPadding 30 0 30 0 viewpager的内容是借用的zoomlayouthere 所以问题是 每当我从视图页
  • 将变量绑定到回调函数

    我正在从请求处理程序调用一些数据库函数 所有这些函数都执行单独的 错误回调 来处理错误 例子 function referralComplete req res getting id etc db startDatabaseConnecti
  • 我的 str_replace 代码不起作用

    为什么这段代码不起作用 我试图重命名 切换位置等 但这似乎是 str replace 错误 如果有人告诉我出了什么问题 那就太好了 这是我的index php
  • pip install --user 时 Python console_scripts 不起作用

    我将代码包装到 python 包中 现在我希望它也可以从命令行 linux 运行 因此 我将 console scripts 标签添加到 setup py 中 当我以 root 身份安装它时 一切似乎都工作正常 我可以从命令行运行程序 不过
  • kafka __consumer_offsets 主题日志大小快速增长,减少磁盘空间

    我发现 consumer offsets主题日志大小正在快速增长 经过进一步研究发现了容量最大的主题 我更改了这些主题的保留策略以阻止增长速度 但希望增加磁盘空间并删除所有旧日志 consumer offsets topic 但这将导致所有
  • Android:屏幕旋转、销毁和服务难题

    我修改了 SDK 演示中的蓝牙聊天示例 以便能够控制 arduino 供电的蓝牙 LED 矩阵 使用聊天程序 我可以通过蓝牙向显示器发送消息 但我有一个问题 我已经完成了两种屏幕布局 纵向和横向 这样我就可以让界面占据手机上的大部分空间 无