我有一个Android应用程序,其服务在后台运行,可以进行各种客户端/服务器连接。如果显示我的应用程序中的任何屏幕,如何检查我的正在运行的服务?
答案 0 :(得分:5)
您可以获取正在运行的进程列表,并使用以下代码检查您的进程是否在前台:
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
查看详情答案 1 :(得分:3)
Refreshing an Activity from service when Active 一些选择:
•让活动在onResume()中使用服务注册一个侦听器对象,并在onPause()中删除它
•发送私人广播,当活动位于前台时,通过registerReceiver()获取活动
•让活动为服务提供“待定结果”式PendingIntent
•使用ResultReceiver
•使用ContentProvider,活动保留来自提供者的Cursor,服务更新提供者
请参阅此处https://github.com/commonsguy/cw-advandroid/tree/master/AdvServices/以获取一些示例。
答案 2 :(得分:1)
要检查服务是否正在运行,请使用
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);