如果程序当前在前台,返回 True,否则返回 False。我不知道有没有更好的判断方法,这个是通过枚举列表的方式实现的,至于 SharedActivityManager 函数请参考前一篇文章:[FMX]将 Android 程序切换到后台及从后台切换到前台实现。
function IsAppActive:Boolean; var AList:JList; AProcess:JActivityManager_RunningAppProcessInfo; AName:JString; AIterator:JIterator; begin AList:=SharedActivityManager.getRunningAppProcesses; AName:=SharedActivityContext.getPackageName; Result:=False; if Assigned(AList) then begin AIterator:=AList.iterator; while AIterator.hasNext do begin AProcess:=TJActivityManager_RunningAppProcessInfo.Wrap((AIterator.next as ILocalObject).GetObjectID); if AProcess.processName.equals(AName) then begin if AProcess.importance=TJActivityManager_RunningAppProcessInfo.JavaClass.IMPORTANCE_FOREGROUND then begin Result:=True; Break; end; end; end; end; end;