Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';是否在新线程中从FREContext调用getActivity()?_Java_Android_Multithreading_Apache Flex_Air Native Extension - Fatal编程技术网

Java Can';是否在新线程中从FREContext调用getActivity()?

Java Can';是否在新线程中从FREContext调用getActivity()?,java,android,multithreading,apache-flex,air-native-extension,Java,Android,Multithreading,Apache Flex,Air Native Extension,我正在编写一个AIR原生扩展,它必须在一个新的Android线程上做一些工作。我必须使用上下文来获取此线程中的设备信息。我正在一个新线程中调用FREContext的getActivity方法,该线程将segfults 在我的FREContext扩展类中,我有: public class MyExtensionContext extends FREContext { public void doThreadWork() { new Thread(new Runnab

我正在编写一个AIR原生扩展,它必须在一个新的Android线程上做一些工作。我必须使用上下文来获取此线程中的设备信息。我正在一个新线程中调用FREContext的getActivity方法,该线程将segfults

在我的FREContext扩展类中,我有:

public class MyExtensionContext extends FREContext {    
    public void doThreadWork() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                // calling com.adobe.fre.FREContext.getActivity(), crashes here
                Activity act = getActivity(); 
            }
        }
    }
}

根据Adobe文档,不允许在正在运行的FREFunction线程之外访问FREObjects。FREContext和新线程是否存在类似的情况

好的,事实证明我不能直接从上下文调用getActivity()。我必须通过我的函数进行设置:

public class MyFunction implements FREFunction {

    @Override
    public FREObject call(FREContext context, FREObject[] passedArgs) {      
        MyExtensionContext mec = (MyExtensionContext) context;
        // Set a local variable in MyExtensionContext to getActivity value
        mec.act = mec.getActivity();
        mec.doThreadWork();
        return null;
    }
}
现在,我的上下文如下所示:

public class MyExtensionContext extends FREContext {    
    public Activity act;        

    public void doThreadWork() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                // Do stuff with Activity "act" here
            }
        }
    }
}

我不完全确定为什么会这样做,因为这似乎是一个额外的步骤,可以获得相同的getActivity()值,但可能是此活动是在与FREContext不同的时间创建的。

理论上,它应该通过调用oFREContext.getActivity()来工作。但有时它会崩溃。我不知道为什么。