1

我创建了一个应用程序,我想在应用程序进入后台时启动服务并在应用程序处于前台时停止服务。我使用了 onPause() 和 onResume(),但我必须在每个活动中处理它。因此,当我从一项活动转移到另一项活动时会调用它。

4

2 回答 2

3

使用布尔标志。

boolean movingInApp = false;
....
movingInApp = true;
Intent intent...
.....
public void onPause() {
    if(!movingInApp) {
        //start service
    }
}

public void onResume() {
    movingInApp = false;
    //Stop service
}

通过在启动任何意图等之前将值设置movingInApp为 true,您可以阻止您的应用程序启动服务。请记住稍后在您的onResume()方法中再次将其设置为 false。如果系统让您的应用程序进入后台,这将是错误的,并且您的服务将被启动。

于 2012-09-22T04:53:01.930 回答
0

我使用了 onPause() 和 onResume(),但我必须在每个活动中处理它。

创建一个“基地” Activity...

public class MyBaseActivity extends Activity {

    // Put any methods you need here that are common to all of your Activities

}

Activity然后只需为您创建的所有类扩展您的基础Activity......

public class ActivityOne extends MyBaseActivity {

    ...

}

通过这种方式,你所有的人Activities都会自动处理你需要做的事情。

于 2012-09-22T05:03:04.453 回答