プリファレンスの利用
プリファレンスを利用するには
プリファレンスにアクセスするためのメソッドを提供するインターフェース
SharedPreferencesの
オブジェクトを取得する必要がある
SharedPreferencesオブジェクトは
Contextクラスの
getSharedPreferences()
で取得する
この第1引数に
アクセスしたいファイル名
第2引数に
処理モードの定数を設定する
プリファレンスの処理モード定数は
MODE_PRIVATE
他のアプリからアクセス不可
MODE_WORLD_READABLE
他のアプリから読み込み可
MODE_WORLD_WRITABLE
他のアプリから書き込み可
データの書き込み、変更、削除には
SharedPreferences.Editorクラスのインスタンスを
SharedPreferencesの
edit()で取得
データの保存には
SharedPreferences.Editorオブジェクトの
putString()に
保存するデータのキーと値を設定し
commit()
で
プリファレンスファイルに保存する
putString()は
第1引数にキー
第2引数に保存する値を設定
putString()のほかにも
putInt()
putLong()
putFloat()
putBoolean()
があるので、保存したいデータ型により使い分けができる
SharedPreferencesオブジェクトを取得したあと
SharedPreferencesオブジェクトの
getString()
でデータ取得
getString()の
第1引数に取得したいデータのキー
第2引数にデータが取得できなかった場合の値
を設定
プリファレンスファイルのデータを全て削除したいなら
SharedPreferences.Editorクラスの
clear()を使う
これは
SharedPreferencesオブジェクトや
SharedPreferences.Editorオブジェクトを取得したあと
clear()を実行する
全部ではなく
指定したデータのキーだけ削除したいなら
remove()を使う
これは
引数にキーを指定する
データを保存するときと同じように
削除するときにも
commit()を実行するのを忘れないように注意
カテゴリー: 未分類
プリファレンスについて
プリファレンスについて
プリファレンスは
javaのMapインターフェースのように
データとキーを組み合わせて保存する
保存データは
/data/data/パッケージ名/shared_prefs
というディレクトリに
ファイル名.xml
という名前のXMLファイルで保存する
このXMLファイルが
プリファレンスファイル
プリファレンスは
データ量やデータ形式に制限があるため
いくつかの設定値の簡易保存などに、使われる
Androidでのデータ保存
データ保存
Androidでは5つのデータ保存方法がある
プリファレンス
端末内部の記憶媒体に
キーと値の組み合わせで保存
ファイル
端末内部の記憶媒体に保存
データベース
デフォルトで搭載されているSQLite DBへ保存
外部メディア
SDカードなどに保存
ネットワーク上のサーバー
そのままの意味
クラウドに保存
Dropboxとかがこれにあたる
バインドを使わないサービス
バインドを使わないサービス
まず、サービスクラスを準備する
サービスクラスは
android.app.Service抽象クラスを継承して定義する
ソースにすると
extends Service
サービスクラスのイベントハンドラは以下のとおり
onCreate
初めてサービスが起動したとき呼ばれる
複数サービス起動の場合は初回だけ呼ばれる
onStart
startService()でサービス開始のとき呼ばれる
onBind
bindService()でサービス開始のとき呼ばれる
onUnbind
サービスのバインドを解除するとき呼ばれる
onRebind
サービスと再度バインドするとき呼ばれる
onDestroy
停止状態から破棄される直前に呼ばれる
注意点としては
バインドを使わなくても
onBind()の実装はなぜか必須ということ
そして、AndroidManifest.xmlに
serviceタグの設定が必要
Androidのサービス機能
Androidでのサービス機能は
画面を持たず、バックグラウンドで独立して動作するプログラム
これはLinuxのサーバーのようなもの
この機能を使えば、
長いダウンロード処理とか
音楽再生などを画面処理から切り離して動作させられる
例えば、音楽を聞きながらWebブラウザー閲覧などができるようになる
サービスの実装方法は2つ
startService()を使う方法
バインドを使う方法
まず、startService()から
これは
アクティビティやサービスから
サービスを呼び出す方法
Activityクラスの
startService()でサービス起動
stopService()でサービス停止
一番簡単な実装方法だが
欠点として
アクティビティから行えるのは
サービスの起動と停止のみ
もうひとつのバインドについて
こちらは
アクティビティとサービスを明示的に
結びつけることで
サービスの起動/停止だけでなく
アクティビティとサービスの相互操作が可能
アクティビティとサービスをバインドするには
アクティビティとサービスのの両方に
AIDLファイルを用意する
AIDLは
Android
Interface
Definition
Language
の略
このAIDLファイルに定義した
インターフェースを使うことで
アクティビティとサービスが互いにやりとりできるようになる
インテントを使いアプリ呼び出し
暗黙的インテントの場合、
アクション定数を引数にインテントを生成
Intentの
setData()
で、URIを設定
startActivity()で次のアクティビティを起動する
指定したアクション定数やURIに合致する
インテントフィルターを持つアプリが
これでよびだされる
暗黙的インテントで
電話やWebブラウザー標準のアプリも呼び出せる
電話なら
アクションは
android.intent.action.DIAL
URIは
tel:電話番号
Webブラウザーなら
アクションは
android.intent.action.VIEW
URIは
http://ホスト名/パス
明示的インテントでも
暗黙的インテントでも
アクティビティを起動するのに
startActivity()
のほかに
startActivityForResult()
が使える
startActivityForResult()
を使うと
次のアクティビティが終了するときに
最初のアプリに値を戻せる
暗黙インテントについて
暗黙的インテント
これは主に他のアプリ呼び出しに使う
これを使うにも
Androidmanifest.xmlの編集が必要になる
Androidmanifest.xmlに
インテントフィルターという
暗黙的インテントで呼び出すための条件を記述する
やり方は、対象の
activityタグの中に
intent-filterタグを設定
そして、この
intent-filterタグの中に判断材料となるタグを設定する
Ajaxまとめ
Ajaxは
サーバーとの通信をjava scriptで行う技術
Ajax通信ではドメインをまたがって要求することができない
サーバーから取得したデータをそのまま
ページに反映するには
load()
を使う
$.getJSON()
とJSONP
を使うことで
ドメインをまたがって通信できる
ajaxStart
ajaxStop
ajaxError
などのAjaxイベントを利用することで
Ajax通信中にアプリ独自の、動作を挟める
Android4.0でのメニューボタン
過去に買った参考書籍ではまること
それは、バージョン違いにより再現できないこと
今回もこれに引っかかりました
Android4.0からだと
Android2.3までとはUIが変わるため
ハードウェアキーの
メニューボタンがありません
このため、Android2.3対応の書籍で
アプリ作成してみると
メニューボタンがなく、はまることがあるので
注意が必要です
にもこれについての解説が載っていました
SQLiteのデータ型
SQLiteのデータ型
INTEGER
符号付き整数
REAL
浮動小数点数
TEXT
テキスト
BLOB
バイナリデータ
Androidでは以下のクラスを使い
SQLite DBを利用する
SQLiteOpenHelperクラス
DB作成、
スキーマのバージョン管理をするための
抽象クラス
このクラスを継承して
DB生成、アップグレード処理を実装する
SQLiteDatabaseクラス
insert()
update()
などDBに対するレコード操作用メソッドを提供するクラス