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