1

我在同一个包下有两个活动(主要活动和另一个活动)。有时我需要开始其他活动startActivityForResult。我有两个问题:

  1. 这两个活动是否属于同一个线程?
  2. 如果我在主要活动中加载本机库,我可以从其他活动中访问本机方法吗?

关于问题 2,假设有一个名为NativeMethod1(). 在主要活动中,像往常一样,我有以下声明:

public native void NativeMethod1();

并且在本机代码中,我将正确声明一个函数(使用 Java_com_mypackage_myapp_ 等 ..)。我为其他活动添加了类似的声明,并且在本机库中,我也添加了相应的方法声明。一切正常,但我担心我假设某些事情并不总是正确的。这将导致不可预测的崩溃。

4

1 回答 1

1

我不会将本机方法添加到您的Activity课程中。相反,创建一个可以在所有活动中使用的单例类。

现在就线程而言,是的,Android 的 UI 模型是单线程的(又名主线程或 UI 线程),因此您的所有活动都在主线程上运行。

当您执行长时间运行的操作时,不要阻塞 UI 线程,因为这会导致 ANR(活动无响应)情况,因此如果您在本机方法中做一些花哨的事情,您最好使用 anAsyncTask或 aService或提出您自己的后台线程模型。

于 2013-02-16T22:54:58.057 回答