忍者ブログ

2007/03/04開始。ソフトウェア管理やDelerer SEの作者であるおにぎりくんの試行錯誤の記録です。
2024
前の月へ 10 : 123456789101112131415161718192021222324252627282930 : 12 次の月へ
70  69  68  67  66  65  64  63  62  61  60 
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

Androidアプリを作成する中でよく目にするのが、Activity#onCreate(Bundle)です。
Activityのサブクラスを作って、その中でオーバーライドするのは、定形業務みたいなものですね。
このonCreateメソッドについては、「オーバーライドするなら、スーパークラスの実装を呼びださなければならない」とドキュメントに書いてあります。スーパークラスの実装ではどんなことをしているのでしょうか。ソースを見てみましょう。

ソースコードは、いつも利用しているこちらを使用しています。
http://sites.google.com/site/devcollaboration/codesearch

■onCreateの実装

Activity.javaを検索すると、ソースコードが見つかります。

http://tools.oesf.biz/android-2.2_r1.1/xref/frameworks/base/core/java/android/app/Activity.java
800     protected void onCreate(Bundle savedInstanceState) {
801         mVisibleFromClient = !mWindow.getWindowStyle().getBoolean(
802                 com.android.internal.R.styleable.Window_windowNoDisplay, false);
803         mCalled = true;
804     }

なんと、3行しかありません。
ここでやっているのは、mVisibleFromClientとmCalledフィールドにtrue/falseを代入しているだけです。

■スーパークラスの実装を呼び出さなければならない

"mCalled = true;"はActivity.javaの中に幾つか見つかります。
onCreate
onPostCreate
onStart
onRestart
onResume
onPostResume
onPause
onStop
onDestroy
onConfigurationChanged
onLowMemory
これらのメソッドをオーバーライドするなら、「スーパークラスの実装を呼びださなければならない」なんですね。
"!mCalled"で検索すると、呼び出しをチェックしている箇所が見つかります。performResumeなどのメソッドですね。

■フラグをセットしているだけ?

onCreateは処理が短くてわかりやすいですが、対してonDestroyは何か別の処理をしていそうです。調査継続します。
PR
スポンサード・リンク
この記事にコメントする
Name
Title
Color
Mail
URL
Comment
Pass Vodafone絵文字 i-mode絵文字 Ezweb絵文字
フリーソフト指向::開発日記 by LapisCactus
忍者ブログ | [PR]

今日の聖書
自己紹介
名前:
LapisCactus (おにぎりくん)
Twitter:
Mail:
onigirikun_hsp@hotmail.com
自己紹介:
ふつうのしすてむえんじにあ。
趣味で「ソフトウェア管理」や
「TextView」を作っています。
仕事でもコンピュータを触っているのに
趣味も同じという。
健康に悪いですね。
カレンダー
10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
ブログ内検索
最新CM
[03/03 kusakari]
[11/12 おにぎりくん]
[11/08 れい]
アクセス解析