2011年07月24日

javadoc翻訳 〜Activity編〜(5)

Saving Persistent State

There are generally two kinds of persistent state than an activity will deal with: shared document-like data
(typically stored in a SQLite database using a content provider) and internal state such as user preferences.

For content provider data, we suggest that activities use a "edit in place" user model. That is, any edits a
user makes are effectively made immediately without requiring an additional confirmation step. Supporting this
model is generally a simple matter of following two rules:

When creating a new document, the backing database entry or file for it is created immediately. For example,
if the user chooses to write a new e-mail, a new entry for that e-mail is created as soon as they start entering
data, so that if they go to any other activity after that point this e-mail will now appear in the list of drafts.

When an activity's onPause() method is called, it should commit to the backing content provider or file any changes
the user has made. This ensures that those changes will be seen by any other activity that is about to run.
You will probably want to commit your data even more aggressively at key times during your activity's lifecycle:
for example before starting a new activity, before finishing your own activity, when the user switches between
input fields, etc.

永続的な状態の保存

Activityが扱う永続的データには2種類ある。ひとつが、共有フォルダチックなデータである。これはコンテント・プロバイダを使用して
SQLiteデータベースに保存される。もうひとつがユーザ設定のような端末内部状態である。

コンテント・プロバイダーが管理するデータに関して、Activityは"edit in place(その場編集)"モデルを採用している。
これは、ユーザの起こしたあらゆる編集を、追加の確認段階を踏まずに迅速に有効化するものである。
このモデルには二つのシンプルなルールがある。

@新たなドキュメントを作成しているときは、バックグラウンドのデータベースエントリーや、ファイルを 直ちに作成する。
 例えば、もしユーザが新たなEmailを作成した場合、ユーザがデータをエンタリングした場合
 そのEmail用の新たなエントリを直ちに作成する。これにより、違うActivityに遷移した後でも、Emailを編集していた
 Activityに戻れば、先ほど編集していたEmailは下書きの中に入っているわけである。

AActivityのonPause()メソッドが呼ばれた場合、ユーザ編集の全ては背後のコンテント・プロバイダーなりファイルなりに
 コミットされるべきである。これにより、ほかの起動されるActivityからでも、ユーザ編集への参照が保証される。
 場合によっては、もっと能動的に、Activityの各ライフサイクルの中でデータをコミットしたい場合もあるだろう。
 例えば、新たなActivityを起動する直前や、自身のActivityを終了させた後、あるいはユーザがインプット・フィールドを
 切り替えた場合などである。

This model is designed to prevent data loss when a user is navigating between activities, and allows the system to safely kill
an activity (because system resources are needed somewhere else) at any time after it has been paused. Note this implies that
the user pressing BACK from your activity does not mean "cancel" -- it means to leave the activity with its current contents
saved away. Canceling edits in an activity must be provided through some other mechanism, such as an explicit "revert" or "undo" option.

See the content package for more information about content providers. These are a key aspect of how different activities invoke
and propagate data between themselves.

The Activity class also provides an API for managing internal persistent state associated with an activity. This can be used,
for example, to remember the user's preferred initial display in a calendar (day view or week view) or the user's default home
page in a web browser.

Activity persistent state is managed with the method getPreferences(int), allowing you to retrieve and modify a set of name/value
pairs associated with the activity. To use preferences that are shared across multiple application components (activities, receivers,
services, providers), you can use the underlying Context.getSharedPreferences() method to retrieve a preferences object stored under
a specific name. (Note that it is not possible to share settings data across application packages -- for that you will need a content provider.)

Here is an excerpt from a calendar activity that stores the user's preferred view mode in its persistent settings:

この"edit in place"モデルによってActivityがpauseされた後であるならば、以下のことが実現できる。
 ・ユーザがActivity間に渡って端末操作を行った場合のデータ紛失の回避
 ・Activityの安全なKILL(システム・リソースが必要になった場合など)

つまり、ユーザが「戻る」ボタンを押したからといって、Activityが「キャンセル」されるわけではないことに注意すること。
あくまでも、Activityを現在の状態で保存し、一時的に放置しているに過ぎないのである。Activity内での編集破棄は、"revert"、"undo"オプションといった
他のメカニズムで提供されるべきである。

コンテント・プロバイダーに関する詳細はcontentパッケージを参照してください。ここにActivity間がお互いにどうやって呼び出し合い、データを伝播させているかに
ついてのキーが記載されている。

Activityクラスは、Activityに関連した内部的な永続的状態を管理するためのAPIも持っている。例えば、ユーザの好みのカレンダーの初期表示、つまり
デイ・ヴューするのかウィーク・ヴューにするのかなど、あるいはブラウザのデフォルトのHPなどを記憶しておくのに使用される。

こうしたActivityの永続的状態はgetPreferences(int)メソッドによって管理される。Activityに関連するname/valueペアのプロパティを取得、修正すること
が可能になる。ActivityやReciver、ServiceやProviderといった複数のアプリケーション・コンポーネント間でユーザ・プリファレンスを共有したい場合、
Context.getSharedPreferences(String, int)メソッドを使用する。このメソッドを通して、特定の名前で定義されたオブジェクトを取得することができる。
(ただし、異なるアプリケーション間でセッティングデータを共有することはできない。その場合はコンテント・プロバイダーを使用すること)

以下は設定で保持しているユーザの好きなヴュー・モードをストアリングしているカレンダーActivityからの抜粋コードである。

 public class CalendarActivity extends Activity {
     ...

     static final int DAY_VIEW_MODE = 0;
     static final int WEEK_VIEW_MODE = 1;

     private SharedPreferences mPrefs;
     private int mCurViewMode;

     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);

         SharedPreferences mPrefs = getSharedPreferences();
         mCurViewMode = mPrefs.getInt("view_mode" DAY_VIEW_MODE);
     }

     protected void onPause() {
         super.onPause();
 
         SharedPreferences.Editor ed = mPrefs.edit();
         ed.putInt("view_mode", mCurViewMode);
         ed.commit();
     }
 }
Permissions

The ability to start a particular Activity can be enforced when it is declared in its manifest's tag. By doing so, other
applications will need to declare a corresponding element in their own manifest to be able to start that activity.

See the Security and Permissions document for more information on permissions and security in general.

パーミッション

ある特定のActivityを起動する能力は、マニフェストファイルのactivityタグに権限が明示されていた場合に制限されることがある。これによって、
他のアプリケーションはそのActivityを起動するために、対応するuses-permissionタグを自身のマニフェストファイルに宣言する必要がでてくる。

権限とセキュリティーに関するより詳しい情報は以下のリンクを参照すること。
Security and Permissions document

javadoc翻訳 〜Activity編〜(1)
javadoc翻訳 〜Activity編〜(2)
javadoc翻訳 〜Activity編〜(3)
javadoc翻訳 〜Activity編〜(4)
javadoc翻訳 〜Activity編〜(6)last
posted by sandman at 18:04| Comment(9) | Android | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
眼鏡 gucci
Posted by クリスチャンルブタン メンズ 通販 at 2013年07月18日 20:48
最新作&お買得のオークリー アウトレット,OAKLEYは洗練されたデザインと耐久性、 機能性を兼ね備えております。しかも、☆割引率75%以上☆!ぜひ、めったにない チャンスを逃すな! [url=http://www.sunglassesjapan2013.com/site_map.html]site map[/url] <a href="http://www.sunglassesjapan2013.com/site_map.html" title="site map">site map</a>
Posted by site map at 2013年07月19日 12:09
最新作&お買得のオークリー アウトレット,OAKLEYは洗練されたデザインと耐久性、 機能性を兼ね備えております。しかも、☆割引率75%以上☆!ぜひ、めったにない チャンスを逃すな! [url=http://y.ahoo.it/pUN3i]ルイヴィトン 財布 新作 2013[/url] <a href="http://y.ahoo.it/pUN3i" title="ルイヴィトン 財布 新作 2013">ルイヴィトン 財布 新作 2013</a>
Posted by ルイヴィトン 財布 新作 2013 at 2013年07月19日 12:09
最新作&お買得のオークリー アウトレット,OAKLEYは洗練されたデザインと耐久性、 機能性を兼ね備えております。しかも、☆割引率75%以上☆!ぜひ、めったにない チャンスを逃すな! レイバン サングラス 価格 http://raybansunglasseshot.tumblr.com/
Posted by レイバン サングラス 価格 at 2013年07月19日 12:10
javadoc翻訳 〜Activity編〜(5): tech-ragtime
Posted by gucci カタログ at 2013年07月21日 23:11
非常に基本的な質問で恥ずかしいのですがアイスショーのチケットって、いくらぐらいするものなのでしょうか?
Posted by here at 2013年07月22日 14:54
震災当日にニュースで流れていたスーパーコストコの駐車場スロープの話です。
Posted by сумки Луи Витон at 2013年07月22日 14:55
美姫ちゃん、皆さん、こんばんは★13日昼公演のPIWに行ってきました。美姫ちゃんの演目は「Amazing Grace」であまりに美しくて涙がいっぱい出てきました!AOIで観た時よりも体にパワーがみなぎっているというか…動作のひとつひとつが綺麗でした。ふれあいタイムで初めて美姫ちゃんと握手して頂いて、お話もしかたったのですが「あの憧れてた美姫ちゃんが…!」と思うと泣いてしまって、おめでとうございますと言うのが精一杯でした。「泣かないで〜」と言ってくれた美姫ちゃんは、インタビューなどで受ける印象と同じく、優しくて本当にファン思いな方なんだなって実感しました。TVやショーで観る美姫ちゃんは腕が長くてすらっとして大きい印象があったんですけど、本物の美姫ちゃんはとにかく細くて小さい!って思いました。鼻も高くて可愛すぎました…☆やっぱり美姫ちゃんの演技からは力をもらえます!美姫ちゃんが笑って今シーズンを終えられるように…!全力応援です!!
Posted by ルイヴィトン at 2013年07月22日 14:55
前に新聞で読んだ震災に関するコラムです。なんだか考えさせられます。
Posted by オークリー at 2013年07月22日 14:56
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。