2011年07月05日

javadoc翻訳 〜Activity編〜(2)

Topics covered here:

Activity Lifecycle
Configuration Changes
Starting Activities and Getting Results
Saving Persistent State
Permissions
Process Lifecycle

Activity Lifecycle

Activities in the system are managed as an activity stack.
When a new activity is started, it is placed on the top of the stack and
becomes the running activity -- the previous activity always remains below it in the stack,
and will not come to the foreground again until the new activity exits.

トピック

Activityのライフサイクル
設定変更
Activityの起動および結果取得
永続的状態の保存
パーミッション
プロセスのライフサイクル

・Activityのライフサイクル
ActivityはActivityスタックで管理されている。
Activityが起動されると、そのActivityはスタックの頂上に置かれ、「起動中のActivity」となる
既に一度起動されたActivityたちも、常にスタックの下に残っている。
直近で起動されたActivityが存在する限り、以前のActivityがフォアフグラウンドに現れることはない。


An activity has essentially four states:

・If an activity in the foreground of the screen (at the top of the stack),it is active or running.

・If an activity has lost focus but is still visible
(that is, a new non-full-sized or transparent activity has focus on top of your activity),
it is paused. A paused activity is completely alive (it maintains all state and member
information and remains attached to the window manager), but can be killed by the system
in extreme low memory situations.

・If an activity is completely obscured by another activity, it is stopped. It still retains
all state and member information, however, it is no longer visible to the user so its window
is hidden and it will often be killed by the system when memory is needed elsewhere.

・If an activity is paused or stopped, the system can drop the activity from memory
by either asking it to finish, or simply killing its process. When it is displayed
again to the user, it must be completely restarted and restored to its previous state.

アクティビティは以下の4つの状態からなる。

・スクリーンの前面にいるActivityは「アクティブ」、つまり起動中である。

・フォーカスはなくなったが、まだ視覚的に確認可能
(つまり、もとの画面は見えているのだけれど、その上にサイズが画面より小さなActivityや、透明なActivityが
存在し、スコープはそれらフォアグラウンドのActivityに当たっているということ)
これが「ポーズ」である。ポーズしたActivityは完璧な状態で生き残っている。
つまり、全ての状態とメンバが全て揃っており、ウィンドウマネージャにアタッチされている。
しかしこれらはメモリの逼迫時、システムによってKILLされる可能性がある

・あるActivityが、他のActivityによって完全に覆い隠されている状態、これは「ストップ」である。
この状態でも、以前全ての状態とメンバを保持しているものの、既にユーザから視覚的に確認できない
そしてシステムがどこかの空き容量を探しているときにKILLされることになる。

・Activityがポーズ・またはストップしている場合、システムはそのActivityに対して終了を依頼してメモリからドロップするか、
あるいは単純にプロセスをKILLすることを許されている。再び、ユーザの前に現れるときは
完璧にリスタートされ、以前の状態にリストアされていなければならない。


The following diagram shows the important state paths of an Activity.
The square rectangles represent callback methods you can implement to perform operations
when the Activity moves between states. The colored ovals are major states the Activity can be in.

以下に示すダイアグラムはActivityの重要な状態遷移図である。
四角形のメソッドはActivityが状態遷移した際に実装可能なコールバックメソッドをあらわしている。
色つきの楕円はActivityがとりうる主要な状態である。


Android_Logcat-Activity-Starts.jpg


















There are three key loops you may be interested in monitoring within your activity:

The entire lifetime of an activity happens between the first call to android.app.Activity.onCreate(android.os.Bundle)
through to a single final call to android.app.Activity.onDestroy(). An activity will do all setup of "global" state in
onCreate(), and release all remaining resources in onDestroy(). For example, if it has a thread running in the
background to download data from the network, it may create that thread in onCreate() and then stop the thread in onDestroy().

The visible lifetime of an activity happens between a call to android.app.Activity.onStart() until a corresponding call
to android.app.Activity.onStop(). During this time the user can see the activity on-screen, though it may not be in the
foreground and interacting with the user. Between these two methods you can maintain resources that are needed to show
the activity to the user. For example, you can register a android.content.BroadcastReceiver in onStart() to monitor for
changes that impact your UI, and unregister it in onStop() when the user an no longer see what you are displaying. The
onStart() and onStop() methods can be called multiple times, as the activity becomes visible and hidden to the user.

The foreground lifetime of an activity happens between a call to android.app.Activity.onResume() until a corresponding
call to android.app.Activity.onPause(). During this time the activity is in front of all other activities and interacting
with the user. An activity can frequently go between the resumed and paused states -- for example when the device goes
to sleep, when an activity result is delivered, when a new intent is delivered -- so the code in these methods should
be fairly lightweight.

以下にActivityをモニタリングする上で主要な3つのループ(繰り返す状態遷移)を示す。

Activityの全体的なライフライムは、まず、最初にcallされるonCreate(android.os.Bundle)で始まり、一度だけcallされるonDestroy()で終了する。
ActivityはonCreate()によって"グローバル"な状態のセットアップを行い、onDestory()で残っている全てのリソースを解放する。
例えば、バックグラウンドでネットワークを通じてダウンロード処理を行っているようなスレッドをActivityが持っている場合
ActivtyはonCreate()でそのスレッドを生成し、、onDestory()でそのスレッドをストップすることになるだろう。

Activityの視覚的なライフタイムはonStart()で始まり、onStop()がコールされることにより終了する。
この間、ユーザはActivityをスクリーン上に視認することができる。(ただし、Activityがフォアグラウンドになく、ユーザがインタラクトできないこともある)
この二つのメソッドの間、ユーザに対してActivityを表示するのに必要なリソースを維持することができる。
例えば、UIに影響する変更をモニタリングするために、onStart()のなかでBroadCastReceiverをレジストし、
ユーザが表示を視認しなくなるonStop()でアンレジストするなどといったことが可能だ。
この2つのメソッドは何度も呼ぶことができ、ユーザに対して可視状態、非可視状態を切り替えられる。

フォアグラウンド状態のActivityのライフタイムはonResume()で始まり、onPause()がコールされることで終了する。
この間、そのActivtyは他の全てのActivtyの最上位スタックにおり、ユーザとインタラクトする。
Activtyは頻繁にresumeとpaused状態を行き来し得る。例えば、デバイスがスリープした場合やActivtyのリザルトが届いた場合、新しいintentが届いた場合
などである。したがって、これらのメソッドはlightweightに実装するべきである。


javadoc翻訳 〜Activity編〜(1)
javadoc翻訳 〜Activity編〜(3)
javadoc翻訳 〜Activity編〜(4)
javadoc翻訳 〜Activity編〜(5)
javadoc翻訳 〜Activity編〜(6)last

posted by sandman at 23:59| Comment(0) | Android | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

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


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

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