2014-11-29 15 views
14

Uygulamamda AdMob kullanıyorum. Uygulama yönergelerini takip ettim ve banner reklamları doğru şekilde gösterip yüklüyor. My MainActivity, AdRequest'i oluşturma, banner'ı gösterme, AdView'u duraklatma, devam ettirme ve imha etme konularında referanslardan sorumludur. Etkinlik'ın OnStop() çağrıldığında her AdRequest yüklenmiş, aşağıdaki İstisna oluşturulur: Bu bilgi takibenAdMob: "etkinlik ServiceConnection sızdırıldı" ve "AdvertisingIdClient unbindService başarısız oldu."

6706-6706/com.rocca.controlloSpese E/ActivityThread﹕ Activity com.rocca.controlloSpese.MainActivity has leaked ServiceConnection [email protected] that was originally bound here 
android.app.ServiceConnectionLeaked: Activity com.rocca.controlloSpese.MainActivity has leaked ServiceConnection [email protected] that was originally bound here 
     at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:970) 
     at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:864) 
     at android.app.ContextImpl.bindServiceCommon(ContextImpl.java:1577) 
     at android.app.ContextImpl.bindService(ContextImpl.java:1560) 
     at android.content.ContextWrapper.bindService(ContextWrapper.java:517) 
     at com.google.android.gms.ads.identifier.a.b(SourceFile:330) 
     at com.google.android.gms.ads.identifier.a.a(SourceFile:187) 
     at com.google.android.gms.ads.identifier.a.b(SourceFile:239) 
     at com.google.android.a.t.f(SourceFile:132) 
     at com.google.android.a.t.b(SourceFile:182) 
     at com.google.android.a.q.a(SourceFile:258) 
     at com.google.android.a.q.a(SourceFile:195) 
     at com.google.android.gms.ads.internal.m.a(SourceFile:107) 
     at com.google.android.gms.ads.internal.request.c.a(SourceFile:99) 
     at com.google.android.gms.ads.internal.util.b.run(SourceFile:17) 
     at com.google.android.gms.ads.internal.util.d.call(SourceFile:29) 
     at com.google.android.gms.ads.internal.util.e.call(SourceFile:49) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
     at java.lang.Thread.run(Thread.java:841) 

: AdRequest ise

6706-6781/com.rocca.controlloSpese I/AdvertisingIdClient﹕ AdvertisingIdClient unbindService failed. 
java.lang.IllegalArgumentException: Service not registered: [email protected] 
     at android.app.LoadedApk.forgetServiceDispatcher(LoadedApk.java:922) 
     at android.app.ContextImpl.unbindService(ContextImpl.java:1611) 
     at android.content.ContextWrapper.unbindService(ContextWrapper.java:529) 
     at com.google.android.gms.ads.identifier.a.c(SourceFile:275) 
     at com.google.android.gms.ads.identifier.b.c(SourceFile:100) 
     at com.google.android.gms.ads.identifier.b.run(SourceFile:110) 

Bu olmaz yerleşik ve yüklü değil. IABHelper'ımı onCreate() 'da kurdum ve kullanıcı "remove-ads" sku'yu satın almadıysa reklamlar gösterilir. Bu benim reklamları yüklemek için kullanın koddur:

private void showAds() { 
    int adresult = GooglePlayServicesUtil.isGooglePlayServicesAvailable(MainActivity.this); 
    if (adresult == ConnectionResult.SUCCESS) { 
     //if possible, show ads 
     AdRequest adRequest = new AdRequest.Builder() 
       .addTestDevice(AdRequest.DEVICE_ID_EMULATOR) 
       .addTestDevice("C144E9DA02EA7B26F74ED2C231F31D38") 
       .addTestDevice("93BABD84466B8C1EF529D2FB39D1ACE8") 
       .addTestDevice("BEAA738068664AE9BBF673E37A782E03") 
       .addTestDevice("E51508081F77DF84C129EE471DE67141") 
       .build(); 
     adView.setVisibility(View.VISIBLE); 
     adView.loadAd(adRequest); 
    } else { 
     //if there's a problem, show error and close app 
     GooglePlayServicesUtil.getErrorDialog(adresult, MainActivity.this, 0, new DialogInterface.OnCancelListener() { 
      @Override 
      public void onCancel(DialogInterface dialogInterface) { 
       finish(); 
      } 
     }).show(); 
    } 
} 

Adview en pause(), resume() ve destroy() ilgili etkinliğin yöntemlerinde denir. Pratik olarak, uygulamanın performansı etkilenmez, ancak bellek sızıntılarından kaçınmayı tercih ederim. Bu istisnayı nasıl önleyebilirim?

DÜZENLEME: Manifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
package="com.rocca.controlloSpese" > 

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="com.android.vending.BILLING" /> 
<uses-permission android:name="com.rocca.controlloSpese.BROADCAST_PERMISSION" /> 
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name=".MainActivity" 
     android:finishOnCloseSystemDialogs="true" 
     android:label="@string/app_name" 
     android:launchMode="singleTop" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <meta-data 
     android:name="com.google.android.gms.version" 
     android:value="@integer/google_play_services_version" /> 
    <activity 
     android:name="com.google.android.gms.ads.AdActivity" 
     android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />   
</application> 

+0

Bildiri dosyanızı buraya koyabilir misiniz? –

+0

emin, kısa ve açık yapmak için diğer beyanları kesiyorum. Sadece MainActivity reklamları yükler. – devrocca

+0

onStop() yönteminde özel bir şey mi yapıyorsunuz? OnStop() 'daki – Michael

cevap

9

ben tam olarak sadece AdMob web here örnek hızlı başlangıç ​​projesini kullanarak aynı davranış görüyorum. Bu bir Lollipop'u bir Nexus 5'te çalıştırırken görüyorum.

Bu, bana bir AdMob hatası gibi görünüyor.

AdMob hizmetine başvuru almak ve hatayı durdurup durmadığını görmek için hizmeti el ile açmak için yine de var mı?

+0

Aynı burada. Bunun mopub adaptörüyle ilgili bir şey olduğunu düşündüm ama öyle değil gibi görünüyor. Henüz bir çözüm buldunuz mu? – AndroidMechanic

+0

Google Play Hizmeti AdMob'u kullanan uygulamasında da aynı sorunu yaşıyorum. –

+0

Aynı burada. Herhangi bir çözümün var mı? –

2

Aşağıdaki kod sorunumu çözer;

@Override 
    protected void onDestroy() { 
     // TODO Auto-generated method stub 
     mAdView.destroy(); 
     super.onDestroy(); 
    } 

@Override 
protected void onResume() { 
    // TODO Auto-generated method stub 
    super.onResume(); 
    mAdView.resume(); 

} 


@Override 
protected void onPause() { 
    // TODO Auto-generated method stub 
    super.onPause(); 

    mAdView.pause(); 
} 
+0

OP'de belirttiğim gibi, bu çağrıları yapıyorum, ancak istisna gerçekleşir. Belki de onCreate() 'ı da paylaşmak ister misiniz? Mesajım için – devrocca

+0

üzgünüm. ben yaptım ve sen benim yöntem im hala pls arayan çalışmak bazı sollution bulursanız bana bildirin vermez daha böylece gördüğünüz gibi o zaman ben hataları gördükten sonra bir ya da iki kez için herhangi bir hata görmüyorum teşekkürler :) –

+0

Sorunu benim için çözdüm. – Lizozom