2013-12-13 21 views
0

我想检查一下,我的程序是在后台还是不在!我的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+中运行的方式吗?这种方式应该是可靠的... 感谢您的建议

回答

0

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

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

+0

感谢快速回复。你的服务是什么意思?我如何创建一个服务来检查这个? – user2982082

+0

http://developer.android.com/guide/components/services.html – Kuffs

+0

另一件事,我konw,我可以一次运行一个活动,但为了检查我的程序是在后台还是坚果,不应该检查这个包名?这是错误的? – user2982082