android

どちらが速い?! 整数リソース取得における Integer.parseInt(R.string.hoge) と R.integer.hoge

整数リソースを保存しておくのには、R.integerを使うべきでしょうか。それとも文字列として、R.stringを使用して保存しておくべきでしょうか。整数リソースを取得した場合のパフォーマンスを測定してみましたので紹介します。

続きを読む

アクティビティのライフサイクル メモ

ライフサイクル

  • アクティビティの状態は、実行中、一時停止、停止の3状態。それぞれの状態を遷移する際に、onCreate()などのon~~()と名付けられたコールバックメソッドが呼ばれる。このコールバックメソッドをオーバーライドして、状態遷移の際にさせたい処理を記述する。主なものは以下の7メソッドである。これらのメソッドのもつ役割は覚えておかないと、どこに処理を記述すべきかわからない。間違った場所に記述するとアクティビティのクラッシュを招く。これ以外にもコールバックメソッドは存在する。
↓onCreate()               ↑onDestroy()

    <停止>           ---  不可視の状態。ホーム/スリープ中も含む。

↓onStart()/onRestart()    ↑onStop()

    <一時停止>    ---  他のアクティビティが<実行中>だが、このアクティビティの一部が隠れている/透過している。例えば、ダイアログの表示中。

↓onResume()              ↑onPause() 

    <実行中>

 

こまごま

  • onPause(): これ以降はアクティビティのインスタンスが破棄される可能性があるので、永続的なデータは保存処理を行う。
  • onSaveInstanceState(): アクティビティの状態が保存されるべきときにonStop()の前に呼ばれる。ユーザが戻るボタンで明示的にアクティビティを終了させたときには呼ばれない。大半のandroidフレームワークのWidgetについては、android:idを付加してある場合は、自動でWidgetの状態が保存される。追加の保存処理は、@Overrideしてsuper()を呼んだ後ろに記述する。渡されたBundleに保存する。
  • Aから、他のアクティビティBに切り替わるとき、A[onPause()] -> B[onCreate(), onStart(), onResume()] -> A[onStop()] と呼ばれるため、Bに渡すデータはonPause()で準備する。
  • 挙動確認用として以下のようなコードを任意のコールバックメソッドに挿入すれば、メソッドが呼ばれたときにToast(メッセージ)が表示される。
  • @Override
    public void onRestart(){
        super.onRestart();
        String text = new Throwable().getStackTrace()[0].getMethodName();
        Toast.makeText(this, text, Toast.LENGTH_LONG).show();
    }

参考文献

 

Android Studioでsdkの場所を調べる方法

環境

・Android Studio 2.2

方法

File > Project structure > SDK Location

でみることができます。私の場合は、次の場所でした。

/Users/(username)/Library/Android/sdk

以前は、Android Studio.appの中に配置されていたようですので、昔の記事を参考にする場合は注意です。

ちなみに、adbはこのsdkディレクトリ以下のplatform-toolsにあります。