フツー、公式APIリファレンスで ListView を見るとこんなです。


で、クラス名やメソッド名や説明文に含まれる単語を元にぐぐったりしながらサンプルコードを見つけたりします。
それってめんどくさかったりします。
こんなリファレンスがあったりします。

「Example」ボタンをクリックするとサンプルが続々と表示されます。

フツー、公式APIリファレンスで ListView を見るとこんなです。


で、クラス名やメソッド名や説明文に含まれる単語を元にぐぐったりしながらサンプルコードを見つけたりします。
それってめんどくさかったりします。
こんなリファレンスがあったりします。

「Example」ボタンをクリックするとサンプルが続々と表示されます。

Chromecast へミラーリング可能となっております。昨日付です。

rooted な Nexus5 のみという限定のようですが、音声も綺麗にテレビにミラーリングされます。
まだ、いろいろ不具合はあるようですが、「限定されたアプリ」だけでなく、端末画面がそのままテレビに写しだされるので、いろいろなシーンでの利用が期待できます。
利用したい人は、まず、Google+ コミュニテイ登録から。
Koushik Dutta - Google+ - Mirror for Android (beta) Screencast your Android! Mirror…
さあ、そんな広告を実装しようと思いました。

とりあえず、ぐぐろうとします。
頭悪いので、そこでまず悩みます。
「Google」なのか「Admob」なのか
「インタースティシャル」なのか「インターステイシャル」なのか
「interstatial」なのか「interstitial」なのか
「GooglePlaySDK(gms)」同梱なのか、別SDKなのか。
とりあえず、こんなこまかいことは Google検索に考えてもらうとして
これら単語をやみくもに入力、検索して実装説明方法を探します。
それらしいのがみつかりました。
import com.google.android.gms.ads.doubleclick.*;
public class InterstitialExample extends Activity {
private PublisherInterstitialAd interstitial;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Create the interstitial.
interstitial = new PublisherInterstitialAd(this);
interstitial.setAdUnitId(MY_AD_UNIT_ID);
// Create ad request.
PublisherAdRequest adRequest = new PublisherAdRequest.Builder().build();
// Begin loading your interstitial.
interstitial.loadAd(adRequest);
}
// Invoke displayInterstitial() when you are ready to display an interstitial.
public void displayInterstitial() {
if (interstitial.isLoaded()) {
interstitial.show();
}
}
}
DoubleClick for Publishers (DFP) Interstitial Ads - Google Mobile Ads SDK — Google Developers
が、動きません。Admobの上位の「DFP」なるしくみのようです。
で次。
import com.google.ads.*;
public class BannerExample extends Activity {
private InterstitialAd interstitial;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// インタースティシャルを作成する
interstitial = new InterstitialAd(this, MY_INTERSTITIAL_UNIT_ID);
// 広告リクエストを作成する
AdRequest adRequest = new AdRequest();
// インタースティシャルの読み込みを開始する
interstitial.loadAd(adRequest);
}
}
Google AdMob Ads Android(上級) - Google Mobile Ads SDK — Google Developers
これもダメです。
最新の「GooglePlay SDK(gms)」の実装ではなく、古いAdmobSDKの実装方法のようです。
で、次。

整理してメモ。
2つの状況。
その1:
static 変数がプロセスに保持されている。
↓
プロセスが生きたままだとと思っていたら死んでいる。
↓
そのアプリを画面に表示したときにプロセス再起動。
↓
static 変数が初期化される。
その2:
static 変数がプロセスに保持されている。
↓
プロセスが死んでいると思ったら生きている。
↓
そのアプリを画面に表示したときに既存プロセス利用。
↓
static 変数は初期化されず、そのまま利用される。
結局、アプリの画面を表示したときにそれが
「再起動されたプロセス(static変数初期化)」なのか
「再利用されたプロセス(保持されたstatic変数)」なのか
をはっきり認識しづらいのが問題。
めんどくさいので雑にいうと
その表示した画面が
「アプリ全体を新しく起動した画面」なのか
「一部しれっと生きてた情報を再利用した画面」なのか
と思ったほうが簡単で直感的なのか。
細かくいうといろいろあるのだろうけども。
極端に、
「アプリプロセスはいつでも死ぬ可能性がある」
ということにしておいて、消えて困る情報はアプリプロセス以外の
場所に保持しておくとよし、と。
Preference・データベース・ファイル…
(singleton がどうのこうのはアプリプロセスあっての)
なんで「static変数」がよく問題になるのかは、AndroidなJava 以外のように
「異なるライフサイクルを持つクラス間で、アプリ内で見通しよく簡単に情報を持ち回りたい」
から。
これには「Applicationクラス」を使う、と。
Applicationクラスを継承して、データの共有をする。 « Tech Booster
AndroidアプリでContextを持ち回したい話 - FLYING
MyAppのstatic変数を使うことで、アクティビティのライフサイクルに影響を受けずに値を保持し続けることができます。
またstaticメソッドを用意することで、アプリ内のどこからでもアクセスすることができます。
各オブジェクトの状態をアプリから監視させたり。
Android - Applicationクラスを使ってObserverパターンを実装する - Qiita
念のためそこら公式ドキュメントをみる。
こんなの出てたので。

Google Developers Blog: Ready to cast: Chromecast now open to developers with the Google Cast SDK
YouTube動画を見てみた。
なんのことだかよくわかりません。
サンプルがあるようなので動かしてみようと。
たくさんサンプル公開されています。

いちばん簡単そうな「CastHelloText-chrome」。
まず、WEBサーバに置いたHTMLにブラウザでアクセスして文字を入力する。

すると、テレビにその文字が表示されます。

なんなんでしょうこれは!!ww
で、手順と思ったこと。