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 | このブログの読者になる | 更新情報をチェックする

2011年07月02日

javadoc翻訳 〜Activity編〜(1)

原文 Android Developers Activity
An activity is a single, focused thing that the user can do. Almost all
activities interact with the user, so the Activity class takes care of
creating a window for you in which you can place your UI with {@link #setContentView}
人間が、スマートフォンを使用して何かしているところをイメージしてみてほしい。
彼はスマートフォンで何をしているだろうか?
テキストを編集していることもあるだろうし、
何らかの決定ボタンを押しているかもしれない。
一覧表示されたリストから何かを選ぶところかもしれない。
いずれにしても、そのユーザの選択と行動の可能性は、画面上にどのようにUIが
配置されているかによって、限定されているだろう。

Activtyとは、その「ただひとつに決まったユーザビリティ・セット」にフォーカスしている。
Activityであればそのほぼ全てがユーザと相互に関係(interact、以後インタラクトと表記)する。
ユーザとやり取りする部分の多くがディスプレイを使用するので、必然的にActivityは
画面の生成に関心を払うことになる。
言い換えればActivityは「画面のレイアウト」を決定する役割がある。
それを行うメソッドがsetContentViewメソッドである。

  ※(参考)setContentViewメソッドは以下の3種類が存在する。
  setContentView (int layoutResID)
  setContentView (View view)
  setContentView (View view, ViewGroup.LayoutParams params)

While activities are often presented to the user as full-screen windows,
they can also be used in other ways: as floating windows (via a theme with
android.R$attr.windowIsFloating set) or embedded inside of another activity
(using android.app.ActivityGroup).

Activityはディスプレイ平面をいっぱいに使用して、ユーザとのやり取りを行うが、
3次元方向を表現することもできる。それがwindowIsFloatingテーマを通して表現する
浮遊するウィンドウ(Floating windows)」である。

あるいは、他のActivitを内部に組み込んで使用する。
それがandroid.app.ActivityGroupである。

※参考 ActivityGroupの理解については以下のサイトのお世話になりました。
Y.A.M の 雑記帳

There are two methods almost all subclasses of Activity will implement:
android.app.Activity.onCreate(android.os.Bundle) is where you initialize your activity.
Most importantly, here you will usually call android.app.Activity.setContentView(int)
with a layout resource defining your UI, and using android.app.Activity.findViewById(int)
to retrieve the widgets in that UI that you need to interact with programmatically.
android.app.Activity.onPause() is where you deal with the user leaving your activity.
Most importantly, any changes made by the user should at this point be committed
(usually to the android.content.ContentProvider holding the data).
まずは2つのメソッドに注目してみる。
これはほぼ全てのActivityのサブクラスが実装することになるだろう。

・onCreate()はActivityを初期化するための場である。
 多くの場合このメソッド内でonSetContentView()を使い、事前に定義したUIを適用する。
 上記した3つの種類のうち、setContentView (int layoutResID)を思い出してほしい。
 このIDが指し示す定義用XMLファイルに使用する部品を外部定義するのである。
 プログラマがコードの中で、個々の部品にインタラクトしたい場合は、findViewById(int)
 を使用する。

・onPause()はユーザがActivityを去っていく際のコールバックである。
 重要なことは、ユーザがその時点で変更した情報の全てを復元可能な形でコミット
 すべきであるということだ。 普通、こういったデータの保持はandroid.content.ContentProvider
 が受け持つ。

To be of use with Context.startActivity(), all activity classes must have a corresponding
declaration in their package's AndroidManifest.xml.

The Activity class is an important part of an application's overall lifecycle,
and the way activities are launched and put together is a fundamental
part of the platform's application model.
For a detailed perspective on the structure of Android applications and lifecycles,
please read the Application Fundamentals and Tasks and Back Stack documents.

Context.startActivity()で新たなActivityをスタートできるが、それ有効化するには
AndroidManifest.xmlに使用するActivityの宣言をしなければならない。
以下に例を示す。



Activityは、アプリケーションのライフサイクルを通じて、重要な役割を果たす。
Activityを起動させ、またそれらを集約していく方法は、このプラットフォーム・アプリケーションモデル
において根源的な部分である。
Androidアプリケーションとそのライフサイクルに関わる構造について、より詳しく知りたければ以下の2つを参照。
Application Fundamentals
Tasks and Back Stack

javadoc翻訳 〜Activity編〜(2)
javadoc翻訳 〜Activity編〜(3)
javadoc翻訳 〜Activity編〜(4)
javadoc翻訳 〜Activity編〜(5)
javadoc翻訳 〜Activity編〜(6)last
posted by sandman at 15:15| Comment(0) | Android | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

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