2011-11-09 43 views
2

私はアンドロイドを学んでいますが、Javaでかなり公平な背景を持っていますので、(サブクラス化)アクティビティを直接拡張するチュートリアルの多くが混乱していますか?アクティビティのサブクラスを使用する必要がありますか?

は私が私の活動のすべてに正しくアクティビティのライフサイクルを扱いたい、私は約4多分5を持っていますが、明らかに、それぞれの活動は、ホームキーが押された可能性があり、ユーザーは単に電源ボタンを打つことができました。私が好きな何

は自分のアプリケーションのコンテキストでライフサイクルにおける様々な段階を実装し、単一の活動である

例えば

public class MyActivity extends Activity { 
//overide the lifecycle methods 
    protected void onCreate(Bundle savedInstanceState) { } 

    protected void onStart() { 
      //do my start stuff 
    } 
    protected void onResume() { 
      //open db connection 
    } 
    protected void onPause() { 
      //close db connection 

    } 
} 

私が働くために使用していたので、私は聞いていますのよデータベースを使用していて、それをより高いレベルで処理できるようになったときに、各アクティビティで接続を閉じる処理には奇妙に思えます。

私はMyActivityを拡張したいと思いますが、これは合理的なアプローチですか、私はここのマークから離れていますか?

答えて

3

私はすべてのあなたのActivitiesで使用される定数、(、あなたが言及したホームボタンの操作と同様に、プログレスバーの操作、検索機能など)Activityを拡張Abstractクラスを持っているし、すべての一般的な操作を置くためにその良いアイデアだと思います。 Applicationをサブクラス化し、グローバルコンテキストでアクセスする必要のある変数を格納することもできます。

Googleが開発したアプリケーションのいくつかを見て、そのデザインパターンを使用しようとします。 I/O Schedule appがその1つです。

+0

+1すばらしい答え私はBaseActivityとそのサブクラスを見てきました。 – Luke

2

は、私はそれでいくつかのユーティリティ機能を持つ活動のスーパークラスを持っていますが、順番にformitは、一般的な使用であると、私も同様にすべてのそれらのサブクラスを作成する必要があると思います。それはあなたにとって重要ではないかもしれませんが、より委任的なアプローチへのアプローチを変えました。

それはあなたのニーズを満たしている場合、私はそれで根本的に何か問題がないと思う、と汎用スーパークラスの機能は、アプリケーションの非Androidの活動全体で本質的に等価です。

関連する問題