android の static 変数 が気持ち悪い

Android_Application_Framework_FAQ___Android_Developers

整理してメモ。

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

念のためそこら公式ドキュメントをみる。

続きを読む >>


テレビにAndroid端末の画面を動画で飛ばすの巻

ChromecastへのAndroid画面ミラーリングデモ公開、AllCast_アプリに導入へ_-_Engadget_Japanese

ChromecastへのAndroid画面ミラーリングデモ公開、AllCast アプリに導入へ - Engadget Japanese ChromecastへのAndroid画面ミラーリングデモ公開、AllCast アプリに導入へ - Engadget Japanese

あたしは、Chromecast を持っておりますが。

Miracast のような無線映像転送とは異なり、アプリから指示されたメディアを Chromecast (の中身である簡易版 Chromeブラウザ) が直接ネットにアクセスして表示する仕組みです。このため、Googleによる説明も「お気に入りのオンライン・エンターテインメントをテレビで観るための製品」。
Chromecast はホーム画面のミラーリングや非対応アプリの画面出力には(正式には) 対応していません。

ということで、Android端末をホストとしての画面をリアルタイムでテレビ画面に表示することはできません。

が、技術的にはできるという話。

Koushik Dutta 氏が公開したデモでは、Androidスマートフォン側をホストとしてChromecast にアクセスさせることでホーム画面ストリーミング表示を実現します。

きれいに「Flappy bird」がテレビに表示されています。

で、こんなかんじでできるのではないかと。

続きを読む >>


やばい!「Flappy Bird」を入れてる人は至急確認を。

こんな記事。偽アプリです。

高額の料金が発生する特定の番号に「SMSのメッセージ(以下、テキストメッセージ)」を送信し、被害者となったユーザの電話料金の請求書に、見に覚えのない料金を加算します。図2 のように、偽の Flappy Bird は、インストール時にテキストメッセージの読み取りおよび送信の追加許可を求めます。

「Flappy Bird」:開発者による削除後、トロイの木馬化したアプリ を確認 | トレンドマイクロ セキュリティ ブログ (ウイルス解析担当者による Trend Micro Security Blog)

えっ。

この記事によると、

開発者は突如、Apple の公式アプリストア「App Store」および Google の公式アプリストア「Google Play」からの取り下げを表明し、実際に Flappy Bird は削除されました。

はっきり「削除されました。」と書いてるけど。

Google Play にいってみると、まだふつーに公開してるけど。

Flappy_Bird_-_Google_Play_の_Android_アプリ

Flappy Bird - Google Play の Android アプリ

必要なパーミッションをみてみると、

続きを読む >>