[FMX] Android 判断自己程序是否是前台程序

如果程序当前在前台,返回 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;

 

滚动至顶部