【问题标题】:android switch activity from non ui threadandroid从非ui线程切换活动
【发布时间】:2012-02-06 00:20:35
【问题描述】:

我正在开发 android unity3d 项目,我想在 facebook 上发布一些东西。 基本上,该应用程序正在运行我无法控制的活动。 Facebook 单点登录要求我提供活动以显示其内容。 现在的问题是,发布到 facebook 的触发器是从 Unity 活动(从本机代码通过 JNI)发出的。它基本上是我的普通 Java 对象作为连接器,它是从本机代码中的统一创建的,我可以称之为方法。我还可以访问对 currentActivity 的引用。仍然无法用它做任何事情。

我总是得到

AndroidRuntime(12845): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

我尝试将此当前活动引用提供给 Facebook authorize() 作为要绑定的活动,但给出了错误。 我试图切换到我自己的活动,我想在上面启动 Facebook。 得到同样的错误。 试过这个

Intent intent = new Intent(UnityPlayer.currentActivity.getApplicationContext(), MyActivity.class);
UnityPlayer.currentActivity.startActivity(intent);

还有一些其他类似的东西,但不能切换活动。 我该怎么做?

谢谢

【问题讨论】:

    标签: android android-activity switch-statement unity3d


    【解决方案1】:

    那是因为 UI 操作不能在工作线程上运行。你应该试试runOnUiThread

    UnityPlayer.currentActivity.runOnUiThread(new Runnable() {
    public void run() {
      Intent intent = new Intent(UnityPlayer.currentActivity.getApplicationContext(),MyActivity.class);
    
    
    UnityPlayer.currentActivity.startActivity(intent);
     }
    
    });
    

    【讨论】:

    • 我不得不稍微修改你建议的代码,但它工作得很好,非常感谢我自己永远不会弄清楚这个;o)
    • 你能分享一下你是如何让它工作的吗?非常感谢。
    • 我想通了!!我在这里发布了我的教程:forum.unity3d.com/threads/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多