如何列出 Xamarin.Android 上所有打开的活动?

How can I list all opened activities on Xamarin.Android?

我是移动开发的新手,正在学习 Xamarin。我已经有一些使用 C# 的经验。 我目前正在研究 Xamarin.Android 的分层导航。 在我的项目中,我有主要的 activity、第二个和第三个活动,我可以在它们之间导航。我想知道如何列出所有打开的活动? 例如,如果我在 main activity 中并且我请求打开的活动列表,函数应该 return me 一个仅包含 main activity 名称的列表,但是如果我在第三个 activity,函数应该 return me 一个列表,其中包含主要、第二和第三个活动的名称,大致如下:

主要活动 第二活动 第三活动

我怎样才能得到这些信息?

我正在使用 Xamarin.Android 而不是 Xamarin.Forms。

您可以使用 ActivityManager 获取活动的详细信息。

GetRunningTasks 会 return 当前 运行 的任务列表。但此方法在 API 级别 21 中已弃用。为了向后兼容,它仍将 return 其数据的一小部分:至少是调用者自己的任务,可能还有一些其他任务,例如家庭以不敏感着称。

目前,我们只能使用 BaseActivity 获取第一个 activity 并使用 TopActivity 获取当前。

   ActivityManager m = (ActivityManager)this.GetSystemService(ActivityService);
             var runningTaskInfoList =  m.GetRunningTasks(10);
            foreach (var item in runningTaskInfoList)
            {                    
                string first = item.BaseActivity.ShortClassName;                   
                string current = item.TopActivity.ShortClassName;                 
                
            }  

感谢您的帮助。 我想差不多就这样了。我对您的代码做了一个小修改,看起来像这样:

 public string ListAllActivities()
    {
        string result = "";

        ActivityManager activityManager = (ActivityManager)this.GetSystemService(ActivityService);
        var runningTaskInfoList = activityManager.GetRunningTasks(10);
        foreach (var item in runningTaskInfoList)
        {
            string first = item.BaseActivity.ShortClassName.Substring((item.BaseActivity.ShortClassName.LastIndexOf('.') + 1), item.BaseActivity.ShortClassName.Length - (item.BaseActivity.ShortClassName.LastIndexOf('.') + 1));
            string current = item.TopActivity.ShortClassName.Substring((item.TopActivity.ShortClassName.LastIndexOf('.') + 1), item.TopActivity.ShortClassName.Length - (item.TopActivity.ShortClassName.LastIndexOf('.') + 1));
            result += first + " - " + current + "\n";
        }

        return result;
    }

结果是这样的:Activities Stack

当我在第三个 activity 时,我没有得到第二个 activity 的列表。如果我在第三个 activity 中,可以列出第二个和主要的活动,那么问题就会得到解决。