Непонятный глюк AdMob и WebView

Интерфейс, диалоги, темы, стили, меню
Ответить
apollox
Сообщения: 23
Зарегистрирован: 07 янв 2014, 13:51

Непонятный глюк AdMob и WebView

Сообщение apollox » 02 июн 2015, 16:24

Всем привет, помогите разобраться с сабжем, уже который день не могу разобраться
В layout два RelativeLayout, к одному в коде цепляется баннер, к другому Webview
В коде загружается баннер AdMob, в соответствии с инструкцией Гугла
Создаю WebView, в него с помощью loadDataWithBaseURL загружаю текстовую строку, и все.

Глюк часто проявляется на 2.3 и 4.0.4, иногда на 4.1, ни разу не проявлялся на 4.4 (думаю, что из-за обновленного в этой версии WebView). Пробовал в разных wi-fi сетях.

При запуске приложения, в WebView вижу свою текстовую строку "loadData", внизу загружается баннер. Меняем ориентацию экрана, активити уничтожается, восстанавливается, строка и баннер появляется.

Выходим из приложения кнопкой "Назад".

Через какое-то время заново запускаем приложение, и вот при втором или третьем или пятом, когда как, запуске, баннер НЕ грузится, но что самое непонятно, также НЕ появляется текст в WebView! То есть AdMob еще и каким-то образом не дает корректно отрабатывать конструкции myWebView.loadDataWithBaseURL()
Причем остальной код отрабатывается нормально всегда, то есть если повестить Toast например в onStop(), то он покажется.
Единственное, что помогает - зайти в настройки->диспетчер приложений и принудительно остановить приложение, после этого запускаю приложение и вновь вижу баннер и текст в WebView, но это длится до очередного глюка.

Если убрать баннер, то WebView отрабатывает всегда.

Подскажите плиз, в чем причина, как победить?

Манифест

Код: Выделить всё

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.mypackage.myadmob"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="10"
        android:targetSdkVersion="22" />
    
	<uses-permission android:name="android.permission.INTERNET"/>
	<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>    

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">
        
        <!--This meta-data tag is required to use Google Play Services. -->
        <meta-data android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" /> 
                
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        
        <!--Include the AdActivity configChanges and theme. -->
        <activity android:name="com.google.android.gms.ads.AdActivity"
            android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
            android:theme="@android:style/Theme.Translucent" />
                
    </application>

</manifest>
Layout

Код: Выделить всё

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.mypackage.myadmob.MainActivity" >

	  	<RelativeLayout
		    android:id="@+id/webViews"			    
		    android:layout_width="wrap_content"
		    android:layout_height="200dp">			
		</RelativeLayout>	    
    
		<RelativeLayout
		    android:id="@+id/advertView"			    
		    android:layout_width="match_parent"
		    android:layout_height="wrap_content"
		    android:layout_alignParentBottom="true">
		</RelativeLayout>	

</RelativeLayout>
Активити

Код: Выделить всё

public class MainActivity extends AppCompatActivity {
	
	  WebView myWebView;
	  RelativeLayout advertView;
	  RelativeLayout webViews;
	  
	  AdRequest.Builder adRequestBuilder;
	  AdView mAdView;
	   
	@Override
	  public void onCreate(Bundle savedInstanceState) {
	    super.onCreate(savedInstanceState);
	    setContentView(R.layout.activity_main);
	    
	    /* Begin WebView */ 
		webViews = (RelativeLayout) findViewById(R.id.webViews);	    
		myWebView = new WebView(this);
		webViews.addView(myWebView);		
		myWebView.loadDataWithBaseURL(
                               "file:///android_asset/",
				"<html>loadData</html>",
				"text/html",
				"UTF-8",
                                 null
		);
		/* End WebView */	    
		
	    /* Begin AdMob Banner */
	    advertView = (RelativeLayout) findViewById(R.id.advertView);  		
	    mAdView = new AdView(this);
	    mAdView.setAdSize(AdSize.BANNER);    
	    mAdView.setAdUnitId("ca-app-pub-3940256099942544/6300978111");
	    adRequestBuilder = new AdRequest.Builder();
	    adRequestBuilder.addTestDevice("Идентификатор моего телефона"); // Samsung Gio Phone
	    advertView.addView(mAdView);
	    mAdView.loadAd(adRequestBuilder.build());
	    /* End AdMob Banner */    	    
	  }
		  
	  @Override
	  public void onResume() {
	      super.onResume();	
	      mAdView.resume();
	  }
	
	  @Override
	  public void onPause() {
	      mAdView.pause();	
	      super.onPause();
	  }
	
	  @Override
	  public void onDestroy() {
	      mAdView.destroy();	
	      super.onDestroy();
	  }  
}

Ответить