2
@Override
protected void onStop() {
super.onStop();  // Always call the superclass method first

// Save the note's current draft, because the activity is stopping
// and we want to be sure the current note progress isn't lost.
ContentValues values = new ContentValues();
values.put(NotePad.Notes.COLUMN_NAME_NOTE, getCurrentNoteText());
values.put(NotePad.Notes.COLUMN_NAME_TITLE, getCurrentNoteTitle());

getContentResolver().update(
        mUri,    // The URI for the note to update.
        values,  // The map of column names and new values to apply to them.
        null,    // No SELECT criteria are used.
        null     // No WHERE columns are used.
        );
}

これは活動ライフサイクルのコードです。ここで super.onStop() を使用する目的がわかりませんか? そして、スーパークラスメソッドとはどういう意味ですか?

4

4 に答える 4

0

Android SDK の仕組みは、率直に言って非常に醜いものです。この SDK には存在しないアンチパターンがいくつかあるかもしれませんが、私はまだ見つけていません。

さまざまなアクティビティ/フラグメント/サービスなどのクラスをサブクラス化してアプリを作成し、さまざまなメソッドをオーバーライドして有用なことを行いすべてのライフサイクル メソッドでメソッドのスーパークラス実装を呼び出す必要があります。やりたいことは何でも。

ヒント: 考えずに実行してください。ドキュメントを確認し (存在する場合)、super.onXXX が指定されている場合は常に最初に呼び出します。

于 2013-05-17T05:53:05.440 に答える
0

これは派生クラスのメソッドであるため、super を使用して呼び出す必要があります。そうしないと、詳細については例外がスローされます。これらのリンクを参照してください。

アクティビティのライフサイクル

Android ガイド

于 2013-05-17T05:54:16.417 に答える
0

メソッドがそのスーパークラスのメソッドの 1 つをオーバーライドする場合、キーワード super を使用してオーバーライドされたメソッドを呼び出すことができます。

したがって、super.onStop() を呼び出すことで、基本クラス (Activity) の onStop メソッドを呼び出すことになります。

ユーザーがアクティビティを離れると、システムは onStop() を呼び出してアクティビティを停止します。そのため、onStop メソッドを呼び出してアクティビティを停止することが不可欠です。ただし、独自の機能を実装するために onStop メソッドをオーバーライドしているため、スーパー クラスの onStop メソッドを呼び出さないと、onStop の共通タスクは実行されません。それがあなたがこれを呼ぶ必要がある理由です

于 2013-05-17T05:46:46.553 に答える
0

onStop()Androidのアクティビティライフサイクルメソッドと同様に、スーパークラスはメソッドの実装を提供します.Androidは、停止onStop()するときにこのメソッドを呼び出しActivityます.クラスでonStop()メソッドをオーバーライドすると、super.onStop()これをスキップすると、実際の実装が実行されなくなります. onStopAndroid によって提供されるメソッドであり、実行されるべきであった多くの家の掃除が実行されることはありません。そのため、 onStop() をオーバーライドするとsuper.onStop(). 強制的に書くsuper.onStop()のはアンチパターンのようですが、他の方法もあるかもしれません。

于 2013-05-17T06:03:48.757 に答える