我想在应用程序到达后台时启动服务,并在应用程序处于前台时停止服务

时间:2012-09-22 04:48:14

标签: android

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

2 个答案:

答案 0 :(得分: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。如果系统让您的应用程序转到后台,那么这将是错误的,您的服务将会启动。

答案 1 :(得分: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都会自动处理您需要执行的操作。