在后台运行我的应用程序

时间:2013-12-13 13:01:02

标签: android background

我想检查,我的程序是否在后台!我的prgram有一个包(我的所有类都在一个包中)。我搜索了一下,最后我找到了这种方式。我写这段代码,但当我的程序在后台时,我的代码没有运行。为什么呢?

public class BackgroundCheck extends AsyncTask<Context,Void,Boolean>{

    @Override
    protected Boolean doInBackground(Context... arg0) {
        // TODO Auto-generated method stub
        Context context=arg0[0];
        return isAppInBackground(context);
    }

    private boolean isAppInBackground(Context context){
        ActivityManager activityManager=(ActivityManager)context.getSystemService(context.ACTIVITY_SERVICE);
        List<RunningAppProcessInfo> appProcess=activityManager.getRunningAppProcesses();
        if (appProcess==null)
            return false;
        final String packageName=context.getPackageName();

        Log.e("packageName", packageName);
        //Toast.makeText(context, "packageName="+packageName,Toast.LENGTH_LONG).show();

        for(RunningAppProcessInfo processInfo:appProcess){
            if((processInfo.importance==RunningAppProcessInfo.IMPORTANCE_BACKGROUND)&&( processInfo.processName.equals(packageName))){
                Log.e("process", "in background");
                Toast.makeText(context, "process in background", Toast.LENGTH_LONG).show();
                Log.e("packagenmae", processInfo.processName);
                return true;
            }
        }
        return false;
    }

}

我在这个类中添加了这个代码但是当我的程序在后台运行时,否则运行!总是我的程序在前台!什么是问题?

if((processInfo.importance==RunningAppProcessInfo.IMPORTANCE_BACKGROUND)&&( processInfo.processName.equals(packageName))){
    Log.e("process", "in background");
    Toast.makeText(context, "process in background", Toast.LENGTH_LONG).show();
    Log.e("packagenmae", processInfo.processName);
    return true;
}
else if((processInfo.importance==RunningAppProcessInfo.IMPORTANCE_FORGROUND)&&( processInfo.processName.equals(packageName))){
    Log.e("process","in forground");
    return true;
}

我可以使用另一种在api 7+中运行的方式吗?那样应该可靠...... 谢谢你的建议

2 个答案:

答案 0 :(得分:0)

一次只能运行一个活动。当其他活动变为活动状态时,所有其他活动都将被暂停。

如果您希望代码在后台可靠运行,则需要使用服务。

答案 1 :(得分:0)

如果您想知道自己的应用是否处于后台,那么您必须使用服务

你应该这样做:

http://www.vogella.com/articles/AndroidServices/article.html