android怎样判断应用程序退到后台

android怎样判断应用程序退到后台,第1张

我们知道,当我们按返回或Home键退出应用程序的界面时,应用程序会在后台被挂起。这么设计的好处是,由于应用被系统缓存在内首燃碧存中,那么在用户打开启动应用时就可以通过调用缓存,快速启动应用。当然,由于当今内存和处理器能力的限制,系统会自动关闭一些进程。那么我如何判断这个应用程序在前台还是后台,应用从后台回到前台了?看到一般都是runningProcess或者runningTasks来者举判断应用在前台还是后台事实上,Android在SDK 14的时候提供了一个Callback。ActivityLifecycleCallbacks,你可以通过这个Callback拿到App所有Activity的生段袜命周期回调。

public class Application extends android.app.Application {

private int activityCount//activity的count数

private boolean isForeground//是否在前台

@Overridepublic void onCreate() {

super.onCreate()

registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {

@Override

public void onActivityCreated(Activity activity, Bundle savedInstanceState) {

}

@Override public void onActivityStarted(Activity activity) {

activityCount++

} @Override

public void onActivityResumed(Activity activity) {

} @Override

public void onActivityPaused(Activity activity) {

} @Override

public void onActivityStopped(Activity activity) {

activityCount-- if(0==activityCount){

isForeground=false }

}@Override

public void onActivitySaveInstanceState(Activity activity, Bundle outState) {

} @Override

public void onActivityDestroyed(Activity activity) {

} }) }}

这个Callback写在Application里的,你可以在Application初始化的时候来注册。通过这些回调我们可以将这个计数放在onStart()和onStop()中去。activityCount==1,那么就是前台,activityCount==0,那就是后台。这样判断很很简单了吧。

public abstract class BaseClass extends AppCompatActivity {

判断当前的应用程序是不是在运行

//需要申请GETTask权限

private boolean isApplicationBroughtToBackground() {

ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE) List<ActivityManager.RunningTaskInfo>tasks = am.getRunningTasks(1)

if (!tasks.isEmpty()) {ComponentName topActivity = tasks.get(0).topActivity

if (!topActivity.getPackageName().equals(getPackageName())) {

return true }}return false }

public boolean wasBackground= false //声明一个布尔变量,记录当前的活动背景

@Overridepublic void onPause(){

super.onPause()

if(isApplicationBroughtToBackground())

wasBackground= true }

public void onResume(){

super.onResume()

if(wasBackground){//

Log.e("aa","从后台回到前台") }wasBackground= false }}

文/tigergang(简书作者)

原文链接:http://www.jianshu.com/p/6abb22937e6f

著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

android,判断最后一个activity可以用以下方法

在Activity的瞎告方法中, 有一个方法isTaskRoot()方法, 这个方法可以判断当前Activity是否是最后一个Activity, 如果是, 用户再按一次返回就退出当前应用, 否则回到上一个仍然活动的Activity。具体的 *** 作步骤如下:

1、为每个Activity创建基类BaseActivity,使得每个Activity都是继承于基本的BaseActivity的。

2、复写BaseActivity的finish方法,在方法中调用isTaskRoot()判断是否是最后一个Activity,如晌神消果是给出提示。

以下给出相关重要部分代码:

publicclass BaseActivity extends Activity{

@Override

public void finish() {

super.finish()

if(isTaskRoot()){

Toast.makeText(this,"已经退出宴知程序",Toast.LENGTH_LONG).show()

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12421436.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存