2010年11月17日水曜日

Activity クラスのコンストラクタ

Activityクラスのコンストラクタについてちょっとだけ調べてみた。
ただし、検証機は

xperia
Android 2.1

での話。

MAINのアクティビティが起動される際、そのアプリケーションについて1度でも起動した事があるとか、設定が完了していないと使う事ができないようなアプリケーションの場合、起動時に確認が必要になる。
Activityのライフサイクルではじめに呼ばれる

onCreate()

でチェックしても良いが、余計なオーバーヘッドをなるべく減らすために、onCreate() よりも呼ばれる頻度が低く、はじめに呼ばれるメソッドにチェックするコードを書きたいと思い、それは、、、結局もうコンストラクタしかない。

アプリケーションのMAINに指定してあるActivityのコンストラクタがどんなタイミングで呼ばれるか調べた。
検証した内容は

  • アプリケーション起動後、ホーム キーを押し、また起動
  • アプリケーション起動後、戻るキーを押して、アクティブじゃなくなった後、また起動
  • アプリケーション起動後、ホーム キー、電源ボタンを1度押し、サスペンド状態にして、再び起動
  • アプリケーション起動後、戻るキーを押して、アクティブじゃなくなった後、電源ボタンを1度押しサスペンド状態にして、再び起動
検証結果は、
  • 「戻る」で非アクティブした場合(その後サスペンドにしてもしなくても)、次回起動時、ほぼ必ずコンストラクタが呼ばれる。(今んとこ100%)
  • ホーム キーで非アクティブにした場合(その後サスペンドにしてもしなくても)、次回起動時はほぼ必ずコンストラクタが呼ばれない(今んとこ100%)
って結論になったよ。という話。

ただし、xperia、android 2.1 でしか試してないので、他のプラットホームでは、どうなるかは分からない。

おそらく、その時の空きメモリ容量などの都合によるかもしれないので、残りが少ない時は、毎回コンストラクタが呼ばれるかもしれない。

とりあえず、自分が使いたいと思った目的には合ってるから、これで良いかなという事で。

それからandorid を利用する際、なるべくメモリに残さないように非アクティブにしたいのであれば、ホーム キーより、戻るキーの方が良いみたい、って事がわかった。


2010年11月7日日曜日

Android ローカライズメモ

やりたい事

  • 指定のない場合の言語を英語にする
  • 端末の言語設定が日本語の場合、日本語のテキストを表示


やる事
  1. /res/values/strings.xml には英語用のテキストを書く
  2. /res/values-ja フォルダ作成し、strings.xmlファイルを作る
  3. ja のstrings.xml には、日本語のテキストを書く
これだけ。

端末の言語設定にかかわらずアプリ個別で言語を指定する方法はよくわからない。
このページ(Localization)を全部読んだらわかるかも知れない、、がとりあえず保留。

とりあえず、xperiaでは、端末の言語設定に従ってテキストが英語、日本語に切り替わるのは確認済み。

他言語と言語を表す2文字はここ(ISO-639-2_utf-8.txt)

ListPreference サンプル

今では色々サンプルが転がってますが、完結してなくて結局いくつかを見て回ることになるので記録を残しておこうかなと。

/res/xml フォルダを作成し、setting.xml(ファイル名は適宜)を作成


1<preferencescreen xmlns:android="http://schemas.android.com/apk/res/android">
2    <preferencecategory android:title="@string/setting_title">
3        <listpreference android:defaultvalue="1" android:dialogtitle="@string/select_choice_dlg_title" android:entries="@array/select_labels" android:entryvalues="@array/select_values" android:key="select_choice" android:summary="@string/select_choice_summary" android:title="@string/select_choice_title">
4        listpreference>
5    preferencecategory>
6preferencescreen>

strings.xml に以下のように記述

01<string name="setting_title">設定string>
02  
03 <string name="select_choice_dlg_title">選択string>
04 <string name="select_choice_summary">設定を選びます。string>
05 <string name="select_choice_title">以下から選んでください。string>
06  
07 <string-array name="select_labels">
08        <item>選択1item>
09        <item>選択2item>
10    string-array>
11    <string-array name="select_values">
12        <item>1item>
13        <item>2item>
14    string-array>

javaサンプル

1public class Main extends PreferenceActivity {
2 
3    @Override
4    public void onCreate(Bundle savedInstanceState) {
5        super.onCreate(savedInstanceState);
6   
7        addPreferencesFromResource(R.xml.setting);
8    }
9}

初ブログ

はじめまして

はじめましたー

実は、ナント、人生初ブログです!
今更ながら!
凄いな、俺!

ここまで乗りきれてないやつはなかなかいない。

なぜなんでしょう。