要解决这个问题,可以将插页式广告放在另一个Activity中,并且在加载广告之前暂停AsyncTask。当广告关闭时,恢复AsyncTask的执行。
示例代码:
public class MyAsyncTask extends AsyncTask
public MyAsyncTask(Context context) {
mContext = context;
mInterstitialAd = new InterstitialAd(mContext);
mInterstitialAd.setAdUnitId("your ad unit id");
}
@Override
protected void onPreExecute() {
super.onPreExecute();
// 暂停AsyncTask
pauseAsyncTask();
}
@Override
protected Void doInBackground(Void... params) {
// 执行任务代码
// ...
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
// 恢复AsyncTask
resumeAsyncTask();
}
private void pauseAsyncTask() {
if (!mInterstitialAd.isLoaded()) {
mInterstitialAd.loadAd(new AdRequest.Builder().build());
}
mInterstitialAd.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
// 当广告加载完毕时暂停AsyncTask
if (mInterstitialAd.isLoaded()) {
mInterstitialAd.show();
}
}
@Override
public void onAdClosed() {
// 当广告关闭时恢复AsyncTask
resumeAsyncTask();
}
});
}
private void resumeAsyncTask() {
if (!isCancelled()) {
execute();
}
}
}
下一篇:android城市列表数据库