0

私のアプリケーションでは、CommosWare のWakefulIntentservice. メソッドからdoWakefulWork、いくつかの自己記述メソッドを呼び出します。例えば:

@Override
protected void doWakefulWork(Intent arg0) {
    exampleMethod();
}

private void exampleMethod() {
    //Stuff
}

WakeLockコードを明確に保ちますが、自分で作成したメソッドを呼び出すと、コードが失われる可能性はありますか?

前もって感謝します!

4

2 に答える 2

2

メソッドを呼び出しても、その場を離れて終了するわけではありませんdoWakefulWork。メソッドのコード行を呼び出し元のメソッドにコピーするようなものです。

では、こちらは

protected void doWakefulWork(Intent arg0) {
    exampleMethod();

    exampleMethod2();
}

private void exampleMethod() {
    exampleMethod2();
    exampleMethod2();
}

private void exampleMethod2() {
    print("Hello");
}

ここでこれとまったく同じことをします

protected void doWakefulWork(Intent arg0) {
    { // exampleMethod()
        { // exampleMethod2()
            print("Hello");
        }
        { // exampleMethod2()
            print("Hello");
        }
    }

    { // exampleMethod2()
        print("Hello");
    }
}

またはすべての中括弧なし

protected void doWakefulWork(Intent arg0) {
    print("Hello");
    print("Hello");
    print("Hello");
}

したがってdoWakefulWork、メソッドを呼び出すときに離れるWakeLockことはありません。したがって、離れることはできません。

于 2012-11-02T18:11:01.800 に答える
1

「自己記述メソッド」がスレッドをフォークしたり、非同期で何かを実行したりしない限り、安全です。

于 2012-11-02T16:43:46.567 に答える