我在同一个包下有两个 Activity (主要 Activity 和另一个 Activity )。有时我需要使用 startActivityForResult
启动其他 Activity 。我有两个问题:
- 这两个 Activity 是否属于同一个线程?
- 如果我在主 Activity 中加载 native 库,我可以从其他 Activity 访问 native 方法吗?
关于问题2,假设有一个名为NativeMethod1()
的本地方法。在主要 Activity 中,像往常一样,我有以下声明:
public native void NativeMethod1();
在 native 代码中,我将有一个正确声明的函数(使用 Java_com_mypackage_myapp_ 等 ..)。我为另一个 Activity 添加了类似的声明,并且在 native 库中,我也添加了相应的方法声明。一切正常,但我担心我假设的事情并不总是正确的。这会导致不可预测的崩溃。
最佳答案
我不会将本地方法添加到您的 Activity
类中。相反,创建一个您可以在所有 Activity 中使用的单例类。
就线程而言,是的,Android 的 UI 模型是单线程的(也称为主线程或 UI 线程),因此您的所有 Activity 都在主线程上运行。
当您执行长时间运行的操作时,不要阻塞 UI 线程,因为这会导致 ANR( Activity 无响应)情况,因此如果您在 native 方法中做一些花哨的事情,最好使用 AsyncTask
或 Service
或提出您自己的后台线程模型。
关于android - 同一个包中的两个 Activity 是否属于同一个线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14911345/