我正在为Android手机开发游戏。我想将Google AdMob广告整合到其中,但要让用户尽可能轻松。基本上,我想只在游戏暂停时显示广告(我的意思是游戏暂停)
我在主要活动
中创建了添加adView = new AdView(this, AdSize.BANNER, "xxxxxxxxxxxx");
然后我开始一个新的Thread,它继续在画布上绘图。在游戏暂停(或游戏结束)时,我试图显示广告(这是在新创建的线程内)
adView.setVisibility(AdView.VISIBLE);
但我得到以下异常
android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views
我正在使用GoogleAdMobAdsSdk-6.4.1
谢谢!
答案 0 :(得分:4)
您只能从UI线程访问,请使用:
Runnable runnable = new Runnable() {
@Override
public void run() {
adView.setVisibility(AdView.VISIBLE);
}
}
runOnUiThread(runnable);
或者使用Handler。
Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
adView.setVisibility(AdView.VISIBLE);
};
};
你可以在UI线程中执行此操作:
h.sendEmptyMessage(i);
i - 您可以传递给处理程序的任何值都可以是0。
编辑: 传递给处理程序(i)的值可以从字段msg.what
中检索