在 Android 开发中,子线程当然可以创建对象,这和 Java 本身的语言特性一致 —— 在任何线程中都可以创建对象。但是需要注意一些线程安全和 UI 操作方面的问题。
✅ 子线程可以做什么?
- 创建普通 Java 对象(如 List、Map、自定义类等)
- 执行耗时操作(如网络请求、数据库读写、文件IO)
- 使用某些不依赖于 UI 的 SDK 或库
```java
new Thread(() -> {
// 子线程中创建对象
MyObject obj = new MyObject();
obj.doSomething();
}).start();
```
---
⚠️ 子线程中要注意什么?
1. 不能操作 UI
Android 的 UI 只能在主线程(也叫 UI 线程)中操作。如果你在子线程中试图更新 UI 元素,会抛出异常:
> `android.view.ViewRootImpl$CalledFromWrongThreadException`
✅ 正确方式:通过 Handler、runOnUiThread、LiveData、或者 Coroutine 切回主线程。
```java
runOnUiThread(() -> {
textView.setText("更新UI");
});
```
2. 线程安全
如果多个线程访问同一个对象,必须确保线程安全,比如用 `synchronized`、`Lock`、或者使用线程安全的数据结构(如 `ConcurrentHashMap`)。
3. 对象生命周期
注意子线程中创建的对象不要泄漏,比如持有 Activity 的引用可能会导致内存泄漏。
---