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 回答