4

私は、ユーザーが特定のデータを追加、削除、表示できるようにするために、いくつかの異なるクラスを使用する小さなアプリを開発しました。arrayListを使用してエントリを格納します。これには、配列にリンクされたメソッドを持つ独自のクラスがあるため、すべてのクラスから配列にアクセスできます。

コードを最適化するために上記のメソッドを導入したいと思います。うまくいけば、配列を持っているのと同じアプリケーションクラスに貼り付けて、使用する場所を定義するだけでよいのではないかと考えていました。これにより、必要がなくなります。複数のクラスで同じコードを記述しますが、これは可能ですか?

ありがとう

4

4 に答える 4

14

、、がAndroidによって呼び出された場合onPauseの例。onResumeonDestroy

OnPause()

OnPause()ユーザーが通話やテキストメッセージなどのイベントを受信したときに呼び出されます。onPause()が呼び出されたときに、Activity部分的または完全に非表示になります。

onPauseデータを明示的に保存せずに戻るボタンを押した場合に備えて、ユーザーデータをに保存することをお勧めします。

OnResume()

OnResume()ユーザーがしばらく前に残した履歴書を再開したときに呼び出されますActivity。たとえば、ホームボタンを押してからアプリに戻ったときにonResume()呼び出されます。

ここでネットワーク関連の更新を行うか、でこの種の更新を行うことができますonResume

OnDestroy()

OnDestroyActivityは、アプリが終了するまで、システムまたはユーザーによって、たとえばヒットバックによって破棄されているときに呼び出されます。

システムが自動的に保存しないため、保持したいユーザーデータを保存する必要がonDestroy()あります。

そうは言っても、onPause()とonDestroy()は特定の状況下で呼び出され、上記で指定した以外の操作を行うことを意図していないため、ユーザー定義メソッドを呼び出すことはできません。

アクティビティが開始されると、onCreate()が呼び出され、画面が設定されonResume()、その後にが続きますが、使用onResumeして好きなことを行うことができますが、そのような操作を実行するために別のクラスを作成することを強くお勧めします。最後に、内の別のクラスで作成したメソッドonCreate()onResume()内のメソッドを呼び出しますActivity

于 2012-04-27T16:46:50.840 に答える
3

オーバーライドメソッドのコードを含む基本アクティビティに適しています。そうすれば、アクティビティの代わりにアクティビティを拡張できます。

したがって、baseactivityを拡張するすべてのアクティビティは、3つの方法で反映されます。

public class BaseActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
    }
   @Override
protected void onPause(){
    super.onPause();

}
@Override
protected void onResume(){
    super.onResume();

}
@Override
protected void onDestroy(){
    super.onDestroy();

}

}

上記の3つの方法で実行したいタスクに注意してください。それらはすべてのアクティビティで同じですか、上記のみを使用してください。

于 2012-04-27T16:35:43.690 に答える
2

これがあなたが探しているものであるかどうかはわかりませんが、シングルトンパターンを試してください。これにより、任意のアクティビティからクラスオブジェクトにアクセスできるようになります。すなわち。MyObjectオブジェクト=Singleton.getInstance();

于 2012-04-27T16:31:18.810 に答える
0

よく、Activityを拡張するBaseActivityクラスを作成し、オーバーライドするメソッドをオーバーライドし、他のすべてのアクティビティでActivityを拡張する代わりに、BaseActivityを拡張することができます。

于 2012-04-27T16:30:37.027 に答える