Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.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';t在主线程上启动处理程序_Java_Android_Multithreading_Android Studio_Unity3d - Fatal编程技术网

Java Can';t在主线程上启动处理程序

Java Can';t在主线程上启动处理程序,java,android,multithreading,android-studio,unity3d,Java,Android,Multithreading,Android Studio,Unity3d,我正在开发一个.jar api来从Unity3D读取Google Fit数据。我现在面临的问题是,当我想要执行这段代码时: private void buildFitnessClient() { mClient = new GoogleApiClient.Builder(myContext).addApi(Fitness.HISTORY_API) .addScope(new Scope(Scopes.FITNESS_ACTIVITY_READ_WRITE)

我正在开发一个.jar api来从Unity3D读取Google Fit数据。我现在面临的问题是,当我想要执行这段代码时:

private void buildFitnessClient() {
    mClient = new GoogleApiClient.Builder(myContext).addApi(Fitness.HISTORY_API)
                .addScope(new Scope(Scopes.FITNESS_ACTIVITY_READ_WRITE))
                .addConnectionCallbacks(new ConnectionCallbacksListener())
                .enableAutoManage(this, 0, new ConnectionFailedListener()).build();
}
我得到一个错误: java.lang.IllegalStateException:必须从进程的主线程调用

此错误是由于代码行最后一句中的引用引起的

现在在线上,我发现我可以通过在主活套上启动一个处理程序来解决这个问题,我尝试了以下代码:

new Handler(Looper.getMainLooper()).post(
            new Runnable() {
                @Override
                public void run() {
                    try {
                        buildFitnessClient();
                    } catch (Exception ex) {
                        Log.i(TAG, ex.getMessage() + "\n");
                    }
                }
            });
由于某些原因,我的Unity应用程序会立即崩溃,通常我会得到错误,因为我使用了try-catch语句。有了这个问题,它立即崩溃,并且没有日志我可以检查

当我在没有mainlooper的情况下创建处理程序时,如:

new Handler()

代码运行,但java.lang.IllegalStateException错误仍然存在,Thread.currentThread()显然保持不变

程序运行的线程是Unity创建的线程


提前谢谢

这看起来和我遇到的问题一样,但它并没有为我解决任何问题:似乎线程启动程序可以工作,它在构建健身客户端的方法上崩溃?程序在enableAutoManage中的“This”上崩溃(This,0,…)。。。。
new Handler(Looper.myLooper())