Android - 设置回可见时 admob 横幅崩溃
Android - admob banner crashes when setting back to visible
我在我的游戏顶部显示了一个 SMART BANNER,但只希望它显示在前端。
进入游戏后我调用:
GameMainActivity.mAdView.setVisibility (View.INVISIBLE);
这有效,并且游戏会一直持续到玩家死亡。然后我打电话:
GameMainActivity.mAdView.setVisibility (View.VISIBLE);
然后它崩溃了。还有比我在这里所做的更多的吗?
编辑:logcat 如下:
02-07 18:44:22.422 19564-19674/com.onesevenone.simples E/AndroidRuntime:致命异常:游戏线程
进程:com.onesevenone.simples,PID:19564
android.view.ViewRootImpl$CalledFromWrongThreadException:只有创建视图层次结构的原始线程才能接触其视图。
在 android.view.ViewRootImpl.checkThread(ViewRootImpl.java:6247)
在 android.view.ViewRootImpl.invalidateChildInParent(ViewRootImpl.java:902)
在 android.view.ViewGroup.invalidateChild(ViewGroup.java:4637)
在 android.view.View.invalidateInternal(View.java:11690)
在 android.view.View.invalidate(View.java:11654)
在 android.view.View.setFlags(View.java:9616)
在 android.view.View.setVisibility(View.java:6663)
在 com.onesevenone.game.state.GameState.update(GameState.java:63)
在 com.onesevenone.simples.GameView.updateAndRender(游戏View.java:100)
在 com.onesevenone.simples.GameView.运行(游戏View.java:120)
在 java.lang.Thread.run(Thread.java:818)
您似乎是从非 UI 线程发出调用。您可以 运行 在 UI 线程上使用 runOnUiThread(Runnable action) 方法:
context.runOnUiThread(new Runnable() {
@Override
public void run() {
GameMainActivity.mAdView.setVisibility (View.VISIBLE);
}
});
我在我的游戏顶部显示了一个 SMART BANNER,但只希望它显示在前端。
进入游戏后我调用:
GameMainActivity.mAdView.setVisibility (View.INVISIBLE);
这有效,并且游戏会一直持续到玩家死亡。然后我打电话:
GameMainActivity.mAdView.setVisibility (View.VISIBLE);
然后它崩溃了。还有比我在这里所做的更多的吗?
编辑:logcat 如下:
02-07 18:44:22.422 19564-19674/com.onesevenone.simples E/AndroidRuntime:致命异常:游戏线程 进程:com.onesevenone.simples,PID:19564 android.view.ViewRootImpl$CalledFromWrongThreadException:只有创建视图层次结构的原始线程才能接触其视图。 在 android.view.ViewRootImpl.checkThread(ViewRootImpl.java:6247) 在 android.view.ViewRootImpl.invalidateChildInParent(ViewRootImpl.java:902) 在 android.view.ViewGroup.invalidateChild(ViewGroup.java:4637) 在 android.view.View.invalidateInternal(View.java:11690) 在 android.view.View.invalidate(View.java:11654) 在 android.view.View.setFlags(View.java:9616) 在 android.view.View.setVisibility(View.java:6663) 在 com.onesevenone.game.state.GameState.update(GameState.java:63) 在 com.onesevenone.simples.GameView.updateAndRender(游戏View.java:100) 在 com.onesevenone.simples.GameView.运行(游戏View.java:120) 在 java.lang.Thread.run(Thread.java:818)
您似乎是从非 UI 线程发出调用。您可以 运行 在 UI 线程上使用 runOnUiThread(Runnable action) 方法:
context.runOnUiThread(new Runnable() {
@Override
public void run() {
GameMainActivity.mAdView.setVisibility (View.VISIBLE);
}
});