android - 同一个包中的两个 Activity 是否属于同一个线程?

标签 android android-activity native-code

我在同一个包下有两个 Activity (主要 Activity 和另一个 Activity )。有时我需要使用 startActivityForResult 启动其他 Activity 。我有两个问题:

  1. 这两个 Activity 是否属于同一个线程?
  2. 如果我在主 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 方法中做一些花哨的事情,最好使用 AsyncTaskService 或提出您自己的后台线程模型。

关于android - 同一个包中的两个 Activity 是否属于同一个线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14911345/

相关文章:

c++ - 这个 C++ 项目可以用 .NET Reflector 之类的工具反编译吗?

c++ - 与非常轻量级的 "DEFINE NATIVE ENTRY"函数相比,为什么 Dart 中的原生包装函数如此重量级?

android - 在 Android 项目中集成 MuPDF 库

java - 在android工作室:how I can create two tables with references?

Activity 生命周期中的android内存管理

Android - 使用 Activity 的最佳方式是什么(最佳实践)

android - 登录后从另一个 Activity 启动应用程序

android - 如何知道选项卡式 Activity 模板提供的 fragment 的 fragment ID

android - 将 android.max_aspect 设置为无限制?

android - 在 Android 中隐藏/显示自定义对话框