Android 安卓:admob在loadAd上崩溃
我用的是Admob的Interstitalad。我的应用程序只有在第一次调用“loadAd”时才会崩溃,而且它是不可复制的(100-200次运行中会发生一次,次数更少或更多)。ad单元id肯定是正确的。因此,如果loadAd在第一次调用时没有失败,那么在这次运行中它就不会失败 班级成员:Android 安卓:admob在loadAd上崩溃,android,crash,admob,interstitial,Android,Crash,Admob,Interstitial,我用的是Admob的Interstitalad。我的应用程序只有在第一次调用“loadAd”时才会崩溃,而且它是不可复制的(100-200次运行中会发生一次,次数更少或更多)。ad单元id肯定是正确的。因此,如果loadAd在第一次调用时没有失败,那么在这次运行中它就不会失败 班级成员: InterstitialAd mInterstitialAd; 一旦创建: mInterstitialAd = new InterstitialAd(this); mInterstitialAd.setAd
InterstitialAd mInterstitialAd;
一旦创建:
mInterstitialAd = new InterstitialAd(this);
mInterstitialAd.setAdUnitId(getResources().getString(R.string.interstitial_ad_unit_id));
mInterstitialAd.setAdListener(new AdListener() {
@Override
public void onAdClosed() {
requestNewInterstitial();
finish();
}
});
requestNewInterstitial();
mInterstitialAd = new InterstitialAd(this);
// set the ad unit ID
mInterstitialAd.setAdUnitId(getString(R.string.ad_id));
AdRequest adRequest2 = new AdRequest.Builder()
.build();
// Load ads into Interstitial Ads
mInterstitialAd.loadAd(adRequest2);
mInterstitialAd.setAdListener(new AdListener() {
public void onAdLoaded() {
showInterstitial();
}
});
新填隙法:
private void requestNewInterstitial() {
if (mInterstitialAd != null) {
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice(getResources().getString(R.string.test_device))
.build();
if (adRequest == null) {
return;
}
// HERE'S THE CRASH
try {
mInterstitialAd.loadAd(adRequest);
}catch(Exception e) {
return;
}
}
}
捕获未捕获“loadAd”的崩溃
我怎样才能捕捉到它,或者至少使它不会使我的应用程序崩溃?我希望loadAd失败时,不会显示任何广告。
日志:
A/libc: Fatal signal 5 (SIGTRAP), code 1 in tid 27794 (AdWorker(Defaul)
W/VideoCapabilities: Unrecognized profile 2130706433 for video/avc
I/VideoCapabilities: Unsupported profile 4 for video/mp4v-es
我不知道最后两行是否与这次崩溃有关,但第一行是肯定的。有时,Ad会加载到缓冲区中,因此当您尝试调用loadAd时,它会崩溃 一旦创建:
mInterstitialAd = new InterstitialAd(this);
// set the ad unit ID
mInterstitialAd.setAdUnitId(getString(R.string.ad_id));
AdRequest adRequest2 = new AdRequest.Builder()
.build();
// Load ads into Interstitial Ads
mInterstitialAd.loadAd(adRequest2);
mInterstitialAd.setAdListener(new AdListener() {
public void onAdLoaded() {
showInterstitial();
}
});
在同一类中:
private void showInterstitial() {
if (mInterstitialAd.isLoaded()) {
mInterstitialAd.show();
}
}
激活m1.java
public class Activity_m1 extends AppCompatActivity {
InterstitialAd interstitial;
Activity mactivity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_m1);
setTitle("ABCD");
Advertise.displaym1(getApplicationContext());
}
@Override
public void onBackPressed() {
Advertise adv = new Advertise();
adv.disp_adm1();
finish();
}
}
public class Advertise {
public static InterstitialAd interstitial;
public static void displaym1(Context act) {
interstitial = new InterstitialAd(act);
interstitial.setAdUnitId("ca-app-pub-2621588945556564/3343556333");
AdRequest adRequest1 = new AdRequest.Builder().build();
interstitial.loadAd(adRequest1);
}
public void disp_adm1() {
if (interstitial.isLoaded())
interstitial.show();
}
}
advision.java
public class Activity_m1 extends AppCompatActivity {
InterstitialAd interstitial;
Activity mactivity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_m1);
setTitle("ABCD");
Advertise.displaym1(getApplicationContext());
}
@Override
public void onBackPressed() {
Advertise adv = new Advertise();
adv.disp_adm1();
finish();
}
}
public class Advertise {
public static InterstitialAd interstitial;
public static void displaym1(Context act) {
interstitial = new InterstitialAd(act);
interstitial.setAdUnitId("ca-app-pub-2621588945556564/3343556333");
AdRequest adRequest1 = new AdRequest.Builder().build();
interstitial.loadAd(adRequest1);
}
public void disp_adm1() {
if (interstitial.isLoaded())
interstitial.show();
}
}
好的,那么解决方案是什么?我确信崩溃发生在“loadAd”一行,因为我只是在每行之前打印了一个数字,而当崩溃发生时,“loadAd”一行之后的数字永远不会打印出来。尝试按照我上面介绍的步骤,添加setAdListener。它应该会起作用。另外,我不熟悉日志中的错误,这可能是我提到的问题,所以试着做一次。哦,我明白了!我会尝试数百次,然后告诉你。谢谢就在我想说它有效的时候,它失败了。。再次在“loadAd”pffffon,你在做什么测试?你能解释一下这和firebase的表现有什么区别吗?除了静态的态度。这是本机C库中的错误。你在测试什么设备?