我尝试在MainActivity之外展示广告。如果我在此类中调用 showAd,它可以很好地工作并显示我的广告,但是当我通过实现的接口在我的游戏类中调用此函数时,我遇到了一个错误:"需要主线程"
MMRequest request = new MMRequest(); ;
MMInterstitial interstitial;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
MMSDK.initialize(this);
interstitial = new MMInterstitial(this);
interstitial.setMMRequest(request);
interstitial.setApid("xxxxxx");
AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
RelativeLayout layout = new RelativeLayout(this);
View gameView = initializeForView(new JumpJackieJump(new RequestHandler(), this), cfg);
layout.addView(gameView);
setContentView(layout); }
@Override
public void showAd()
{
interstitial.fetch();
interstitial.setListener(new RequestListenerImpl()
{
@Override
public void requestCompleted(MMAd mmAd)
{
interstitial.display();
}
});
这是因为主线程是 UI 线程。(请记住,这仅适用于安卓 - 有关更多参考,请参阅此处)。
根据 Android 文档,您应该避免在 UI 线程之外更新 UI。
Additionally, the Andoid UI toolkit is not thread-safe. So, you must not manipulate your UI from a worker thread—you must do all manipulation to your user interface from the UI thread.
话虽如此,你也许可以用这样的东西做你想要的事情。