Java Android:我是否应该避免在Commonware';WakefulIntentservice是什么?

Java Android:我是否应该避免在Commonware';WakefulIntentservice是什么?,java,android,wakelock,commonsware-cwac,Java,Android,Wakelock,Commonsware Cwac,在我的应用程序中,我得到了CommosWare的WakefulIntentservice。通过doWakefulWork方法,我调用了两个自写方法。例如: @Override protected void doWakefulWork(Intent arg0) { exampleMethod(); } private void exampleMethod() { //Stuff } 它使我的代码保持清晰,但是当我调用自写方法时,是否有可能丢失WakeLock 提前谢谢 只要“自

在我的应用程序中,我得到了CommosWare的
WakefulIntentservice
。通过
doWakefulWork
方法,我调用了两个自写方法。例如:

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

private void exampleMethod() {
    //Stuff
}
它使我的代码保持清晰,但是当我调用自写方法时,是否有可能丢失
WakeLock


提前谢谢

只要“自写方法”不分叉线程或以其他方式异步执行某些操作,您就安全了。

只要“自写方法”不分叉线程或以其他方式异步执行某些操作,您就安全了。

调用方法并不意味着您离开了
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
不会消失。

调用方法并不意味着您离开了
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");
}

因此,在调用一个方法时,你永远不会离开WakefulWork,因此WakeLock不能消失。

还有一个问题:一个方法执行的最长时间是多少?@Merlin:好吧,最终太阳会熄灭或者变成新星或者其他什么。我会试着在那之前结束。:-)还有一个问题:有没有一个方法执行的最长时间?@Merlin:好吧,最终太阳会烧掉或者变成新星之类的。我会试着在那之前结束。:-)@AkhilJain我想我想说的是,直接方法调用不能是异步的,也可以内联写入调用方法。而且你不需要“自写方法”来启动超过wakelock的异步操作。@AkhilJain我想我想说的是,直接方法调用不能是异步的,也可以内联写入调用方法。您不需要“自写方法”来启动超过wakelock的异步操作。