如何检测我的Android应用程序是否显示?
答
你可以得到正在运行的进程的列表,并检查,如果你是在前台用下面的代码:
ActivityManager actMngr = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
List<RunningAppProcessInfo> runningAppProcesses = actMngr.getRunningAppProcesses();
for (RunningAppProcessInfo pi : runningAppProcesses) {
if (getPackageName().equals(pi.processName)) {
boolean inForeground = pi.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND;
}
}
时请在http://developer.android.com/reference/android/app/ActivityManager.RunningAppProcessInfo.html
答
Refreshing an Activity from service when Active 几个选项:
•有活动注册在的onResume(该服务的监听对象),并在onPause(删除)
•发送私人广播,拿起由通过registerReceiver()活动时,它是在前台
•有活动提供一个“等待结果”式的PendingIntent到服务
•使用ResultRe ceiver
•使用ContentProvider的,与该活动举办到光标从供应商,服务更新提供商
看到这里https://github.com/commonsguy/cw-advandroid/tree/master/AdvServices/了几个例子。
答
要检查服务是否正在运行使用
ActivityManager manager = (ActivityManager) MyApp.getSharedApplication().getSystemService(Context.ACTIVITY_SERVICE);
for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if (CTConstants.MyService_Name.equals(service.service.getClassName())) {
//Your service is running
}
}
如果您不想将此作为普通功能进行概括,请将第一行替换为
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
这很好,谢谢。 – Lysandus 2011-05-26 14:20:28
您可能需要IMPORTANCE_VISIBLE,而不是FOREGROUND,以防您的应用程序可见,但在其上有另一个服务的对话框。 – 2013-04-04 01:23:19
这对我不起作用 – 2014-10-22 19:27:53