<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
  <channel>
    <title>Discuz! BBS - Android</title>
    <link>https://www.unicoder.cn/forum.php?mod=forumdisplay&amp;fid=105</link>
    <description>Latest 20 threads of Android</description>
    <copyright>Copyright(C) Discuz! BBS</copyright>
    <generator>Discuz! Board by Comsenz Inc.</generator>
    <lastBuildDate>Sat, 16 May 2026 07:54:22 +0000</lastBuildDate>
    <ttl>60</ttl>
    <image>
      <url>https://www.unicoder.cn/static/image/common/logo_88_31.gif</url>
      <title>Discuz! BBS</title>
      <link>https://www.unicoder.cn/</link>
    </image>
    <item>
      <title>一段隐私协议和用户协议的代码</title>
      <link>https://www.unicoder.cn/forum.php?mod=viewthread&amp;tid=541</link>
      <description><![CDATA[java：]]></description>
      <category>Android</category>
      <author>admin</author>
      <pubDate>Fri, 09 Jan 2026 01:07:25 +0000</pubDate>
    </item>
    <item>
      <title>详细说明HtmlCompat</title>
      <link>https://www.unicoder.cn/forum.php?mod=viewthread&amp;tid=540</link>
      <description><![CDATA[HtmlCompat 是 AndroidX 提供的一个兼容类，用于处理 HTML 文本的解析和渲染。让我为您详细解释它的作用、用法和重要性：
1. HtmlCompat 的核心作用
HtmlCompat 是 androidx.core.text.HtmlCompat 的缩写，主要解决两个问题：
  1)  HTML 文本解析：将 HTML 字符串转换 ...]]></description>
      <category>Android</category>
      <author>admin</author>
      <pubDate>Thu, 08 Jan 2026 09:31:15 +0000</pubDate>
    </item>
    <item>
      <title>mSharedPreferences这个变量在app卸载后重新安装后，不保留原值</title>
      <link>https://www.unicoder.cn/forum.php?mod=viewthread&amp;tid=539</link>
      <description><![CDATA[结论：数据不会保留
应用卸载后重新安装，SharedPreferences 数据会被清除，不会保留。

数据存储位置

当应用被卸载时，这个目录会被系统完全删除。

数据保留情况对比
存储方式]]></description>
      <category>Android</category>
      <author>admin</author>
<enclosure url="/forum/备注
SharedPreferences" length="❌ 不保留" type="image/jpeg" />      <pubDate>Thu, 08 Jan 2026 08:41:38 +0000</pubDate>
    </item>
    <item>
      <title>Context</title>
      <link>https://www.unicoder.cn/forum.php?mod=viewthread&amp;tid=528</link>
      <description><![CDATA[# 关于 [context](file://C:\\s_c\\Android\\vosk_renew_slim\\app\\src\\androidTest\\java\\cn%unicoder\\myapplication\\LlmServiceTest.kt#L30-L30) 符号解析错误的解决方案

## 问题分析
- [context](file://C:\\s_c\\Android\\vosk_renew_slim\\app\\src\\androidTest\\java\\cn%uni]]></description>
      <category>Android</category>
      <author>admin</author>
      <pubDate>Fri, 26 Dec 2025 20:46:48 +0000</pubDate>
    </item>
    <item>
      <title>Image Asset Studio‌ 生成应用图标</title>
      <link>https://www.unicoder.cn/forum.php?mod=viewthread&amp;tid=518</link>
      <description><![CDATA[Android Studio 提供了一个名为 ‌Image Asset Studio‌ 的集成工具，用于高效生成应用图标（Launcher Icons）的全套资源。它能自动处理不同屏幕密度、形状（如圆形、方形）和 Android 版本所需的图标变体，极大简化了图标适配工作。‌
1
2

主要功能与优势
‌自适应图 ...]]></description>
      <category>Android</category>
      <author>admin</author>
      <pubDate>Mon, 08 Dec 2025 15:29:54 +0000</pubDate>
    </item>
    <item>
      <title>明文连接服务器获得返回值</title>
      <link>https://www.unicoder.cn/forum.php?mod=viewthread&amp;tid=513</link>
      <description><![CDATA[### 1. 报错原因简述  
测试用例期望回调返回结果，但实际为 `null`，导致断言失败。

---

### 2. 错误详细分析  

#### （1）核心错误信息：
```log
java.lang.AssertionError: 再次应用回调应该返回结果
```

该错误来自 JUnit 测试中的以下断言语句（位于 `LlmRecog ...]]></description>
      <category>Android</category>
      <author>admin</author>
      <pubDate>Sun, 30 Nov 2025 07:11:12 +0000</pubDate>
    </item>
    <item>
      <title>val latch = CountDownLatch(1)</title>
      <link>https://www.unicoder.cn/forum.php?mod=viewthread&amp;tid=512</link>
      <description><![CDATA[CountDownLatch(1) 是 Java 并发工具类中的一个同步辅助类，让我为您详细解释：
基本概念
类名: CountDownLatch
构造参数: 这是一个计数器，而不是时间.     1 表示计数器的初始值
包路径: java.util.concurrent.CountDownLatch
工作原理
计数器机制
初始化时设置计数器 ...]]></description>
      <category>Android</category>
      <author>admin</author>
      <pubDate>Sun, 30 Nov 2025 03:23:25 +0000</pubDate>
    </item>
    <item>
      <title>有关Activity startService</title>
      <link>https://www.unicoder.cn/forum.php?mod=viewthread&amp;tid=511</link>
      <description><![CDATA[@Override
    protected void onStart(){
        super.onStart();
        // 绑定服务
        Intent backIntent = new Intent(this, BackgroundService.class);
        bindService(backIntent, mConnection, BIND_AUTO_CREATE);
        startService(backI ...]]></description>
      <category>Android</category>
      <author>admin</author>
      <pubDate>Sun, 30 Nov 2025 03:11:08 +0000</pubDate>
    </item>
    <item>
      <title>kt的新加线程</title>
      <link>https://www.unicoder.cn/forum.php?mod=viewthread&amp;tid=510</link>
      <description><![CDATA[private fun stopAudioRecording() {
        Thread {
            try {
                audioRecordRunning = false
                Log.d(tag, \&quot;主程序：将要停止录制\&quot;)
                audioRecord.isRecording = false
                // Thread.sleep(10 ...]]></description>
      <category>Android</category>
      <author>admin</author>
      <pubDate>Fri, 28 Nov 2025 09:10:25 +0000</pubDate>
    </item>
    <item>
      <title>后台服务（android.app.service）解析</title>
      <link>https://www.unicoder.cn/forum.php?mod=viewthread&amp;tid=509</link>
      <description><![CDATA[onStartCommand 方法在以下时机被调用：
    服务启动时：当通过 startService() 或 startForegroundService() 方法启动 LlmBGService 服务时，系统会调用 onStartCommand 方法。
    每次启动请求：每当有新的启动请求（即使服务已经在运行）时，该方法都会被再次调用 ...]]></description>
      <category>Android</category>
      <author>admin</author>
      <pubDate>Fri, 28 Nov 2025 08:56:00 +0000</pubDate>
    </item>
    <item>
      <title>保持屏幕常亮的一种方法</title>
      <link>https://www.unicoder.cn/forum.php?mod=viewthread&amp;tid=505</link>
      <description><![CDATA[在 MainActivity.kt 中实现保持屏幕常亮的功能，你可以使用以下方法：
在layout中添加：  （xml）]]></description>
      <category>Android</category>
      <author>admin</author>
      <pubDate>Sun, 23 Nov 2025 09:10:02 +0000</pubDate>
    </item>
    <item>
      <title>以下是几种获取 [onMessage]结果的使用示例：</title>
      <link>https://www.unicoder.cn/forum.php?mod=viewthread&amp;tid=503</link>
      <description><![CDATA[根据代码分析，[mCallBack](file://C:\\s_c\\MyApplication\\app\\src\\main\\java\\cn%unicoder\\myapplication\\AudioSocketClient.java#L36-L36) 是 [AudioSocketClient](file://C:\\s_c\\MyApplication\\app\\src\\main\\java\\cn%unicoder\\myapplication\\AudioSocketClient.ja]]></description>
      <category>Android</category>
      <author>admin</author>
      <pubDate>Fri, 21 Nov 2025 06:11:42 +0000</pubDate>
    </item>
    <item>
      <title>Thread.sleep(10000); // 录音10秒 这个Thread它到底是哪个Thread?</title>
      <link>https://www.unicoder.cn/forum.php?mod=viewthread&amp;tid=502</link>
      <description><![CDATA[Thread.sleep(10000); // 录音10秒 这个Thread请说明它到底是哪个Thread，为什么用类名而不用实例名？

关于这行代码中的 `Thread.sleep(10000)`，解释如下：

## Thread.sleep() 是静态方法

- `Thread.sleep()` 是 `Thread` 类的**静态方法**
- 静态方法属于类本身， ...]]></description>
      <category>Android</category>
      <author>admin</author>
      <pubDate>Fri, 21 Nov 2025 01:51:02 +0000</pubDate>
    </item>
    <item>
      <title>如何确保interval是单例变量并线程安全</title>
      <link>https://www.unicoder.cn/forum.php?mod=viewthread&amp;tid=501</link>
      <description><![CDATA[使用静态变量（如果需要跨实例共享）添加同步访问方法（如果涉及多线程访问）
使用原子类确保线程安全]]></description>
      <category>Android</category>
      <author>admin</author>
      <pubDate>Tue, 18 Nov 2025 22:59:19 +0000</pubDate>
    </item>
    <item>
      <title>系统不响应myAudioRecord.stopRecord()</title>
      <link>https://www.unicoder.cn/forum.php?mod=viewthread&amp;tid=500</link>
      <description><![CDATA[根据你提供的测试代码，问题出现在 myAudioRecord.doRecord() 阻塞了测试线程，导致后续的 stopRecord() 无法执行。以下是改进建议：
问题分析
myAudioRecord.doRecord() 在主线程中执行，可能是阻塞式的调用
测试线程被阻塞后，无法继续执行后续的停止录音逻辑
需要将 ...]]></description>
      <category>Android</category>
      <author>admin</author>
      <pubDate>Tue, 18 Nov 2025 20:40:02 +0000</pubDate>
    </item>
    <item>
      <title>context.getExternalFilesDir 与 context.getFilesDir()</title>
      <link>https://www.unicoder.cn/forum.php?mod=viewthread&amp;tid=498</link>
      <description><![CDATA[`getExternalFilesDir` 详解

### 方法定义
```java
File getExternalFilesDir(String type)
```


### 功能说明
- 获取应用在外部存储设备上的专属文件目录
- 返回的是应用私有目录，其他应用无法直接访问
- 当应用被卸载时，该目录下的文件会自动删除

### 参数说明
- ...]]></description>
      <category>Android</category>
      <author>admin</author>
      <pubDate>Sat, 15 Nov 2025 23:00:11 +0000</pubDate>
    </item>
    <item>
      <title>Vosk 新线程这里sleep了15秒，当前线程是阻断了还是在运行</title>
      <link>https://www.unicoder.cn/forum.php?mod=viewthread&amp;tid=497</link>
      <description><![CDATA[这里sleep了15秒，当前线程是阻断了还是在运行的？client所在线程是阻断了还是运行的？

根据代码分析：

1. **当前线程状态**：
   - 当前执行 `Thread.sleep(15000)` 的线程是**阻断的**
   - `sleep()` 方法会让当前线程进入阻塞状态，暂停执行15秒钟

2. **client所 ...]]></description>
      <category>Android</category>
      <author>admin</author>
      <pubDate>Thu, 13 Nov 2025 11:32:56 +0000</pubDate>
    </item>
    <item>
      <title>奇怪的closed</title>
      <link>https://www.unicoder.cn/forum.php?mod=viewthread&amp;tid=492</link>
      <description><![CDATA[E Connection closed:
E Error:
E 识别结果（长字符串）: Client result ERROR

根据日志分析，问题出现在连接被意外关闭导致识别失败。以下是可能的原因和解决方案：
问题分析
连接提前关闭：从日志可以看到，在收到partial结果后连接立即被关闭
错误处理不完整：onClo ...]]></description>
      <category>Android</category>
      <author>admin</author>
      <pubDate>Thu, 06 Nov 2025 18:45:40 +0000</pubDate>
    </item>
    <item>
      <title>测试中想要多次获得onMessage(String message) 的message信息</title>
      <link>https://www.unicoder.cn/forum.php?mod=viewthread&amp;tid=491</link>
      <description><![CDATA[要在测试中捕获多次 onMessage 调用，需要修改回调处理机制。以下是几种解决方案：
方案一：修改回调接口以收集所有消息
二：在 AudioSocketClient 中修改 onMessage 方法
方案三：在测试中直接设置回调处理
推荐使用方案三，因为它不需要修改现有代码结构，只需要在测 ...]]></description>
      <category>Android</category>
      <author>admin</author>
      <pubDate>Thu, 06 Nov 2025 18:18:07 +0000</pubDate>
    </item>
    <item>
      <title>将test.py改写成android程序</title>
      <link>https://www.unicoder.cn/forum.php?mod=viewthread&amp;tid=489</link>
      <description><![CDATA[原程序：
将Python WebSocket客户端程序转换为Android Java版本，并避免使用javax.sound.sampled库。以下是完整的实现：
关键转换点：
1、移除Java Sound API依赖：完全移除了javax.sound.sampled相关导入和使用
2、文件读取：使用FileInputStream替代Python的wave.open ...]]></description>
      <category>Android</category>
      <author>admin</author>
      <pubDate>Fri, 31 Oct 2025 18:25:24 +0000</pubDate>
    </item>
  </channel>
</rss>