В 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>
Код: Выделить всё
<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();
}
}