项目需要app切到后台时,立即定位上传坐标。
网上方案很多,如下:http://blog.youkuaiyun.com/mabeijianxi/article/details/50824861
本文只对方案三:ActivityLifecycleCallbacks的实现作说明:
步骤一:实现接口
public class AppLifeCycle implements Application.ActivityLifecycleCallbacks{
......
}
步骤二:实现onActivityStarted()、onActivityStopped()方法,通过计数的方式判断当前app状态
private int activityAount = 0;
private boolean isAppForeground = true;
@Override
public void onActivityStarted(Activity activity) {
activityAount++;
if(activityAount>0){
isAppForeground = true;
// do something by yourself
}
}
@Override
public void onActivityStopped(Activity activity) {
activityAount--;
if (activityAount == 0 ) {
// 此时表明应用在后台
isAppForeground = false;
// do something by yourself
// Intent i = new Intent(MyApplication.getMyApplication(), TrackService.class);
// MyApplication.getMyApplication().startService(i);
}
}
步骤三:在Application中,注册监听
mAppLifeCycle = new AppLifeCycle();
网上方案很多,如下:http://blog.youkuaiyun.com/mabeijianxi/article/details/50824861
本文只对方案三:ActivityLifecycleCallbacks的实现作说明:
步骤一:实现接口
public class AppLifeCycle implements Application.ActivityLifecycleCallbacks{
......
}
步骤二:实现onActivityStarted()、onActivityStopped()方法,通过计数的方式判断当前app状态
private int activityAount = 0;
private boolean isAppForeground = true;
@Override
public void onActivityStarted(Activity activity) {
activityAount++;
if(activityAount>0){
isAppForeground = true;
// do something by yourself
}
}
@Override
public void onActivityStopped(Activity activity) {
activityAount--;
if (activityAount == 0 ) {
// 此时表明应用在后台
isAppForeground = false;
// do something by yourself
// Intent i = new Intent(MyApplication.getMyApplication(), TrackService.class);
// MyApplication.getMyApplication().startService(i);
}
}
步骤三:在Application中,注册监听
mAppLifeCycle = new AppLifeCycle();
registerActivityLifecycleCallbacks(mAppLifeCycle); // 注册监听
备注:
1、只适用于android4.0以及以上
2、适用于home键、返回键、锁屏键的app后台状态