无法在主线程上启动Handler

我正在使用.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:必须从进程的主线程调用

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

现在在线我发现我可以通过在主Looper上启动Handler来解决这个问题,我尝试使用以下代码:

 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的情况下创建Handler时,例如:

 new Handler() 

要么

 new Handler(Looper.myLooper()) 

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

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

提前致谢!