【问题标题】:Get Singleton Instance of Android Activity?获取 Android Activity 的单例实例?
【发布时间】:2015-09-01 13:33:27
【问题描述】:

我有一个 Android 活动。我希望这个 Activity 是一个单例。我通过设置来做到这一点

android:launchMode="singleTop"

在我的AndroidManifest.xml。现在我需要一个对这个单一 Activity 的引用,而不是用 Intent 启动它。

我可以像这样创建一个实例:

MyActivity a = new MyActivity();

这会导致一个与我做的时候不同的实例:

Intent intent = new Intent(context, MyActivity.class); 
startActivity(intent);

我如何获得与 Android 系统创建的相同的 Activity 实例?

【问题讨论】:

  • 首先,“singleTop”不是一种将活动作为单例的方式。要将活动设为 Singleton,您应该使用“singleTask”或“singleInstance”,只有这两个提供活动的 Singleton 实例。
  • 有什么区别?
  • @Akbar 该链接根本没有帮助。
  • “singleTask”或“singleInstance”活动的实例永远不会超过一个,因此前一个实例应该能够处理所有新的意图。

标签: java android android-intent android-studio


【解决方案1】:

首先你应该知道你不能通过它的构造函数创建一个activity实例,唯一的方法是使用intent来启动它。第二点是您应该考虑的活动启动模式。 singleTop 意味着不再将活动带到任务的顶部,这并不意味着您始终拥有相同的实例,只有当您创建了实例时,android 系统才会使用它而不是在该堆栈中创建新活动。如果您使用singleTask,系统将使用相同的实例,并且包含活动实例的整个任务将被移至顶部。稍有不同的是,singleInstance 启动模式意味着系统在单个活动任务中使用相同的活动实例,并且不会将其他活动添加到该任务中。默认选项是standard,在任何意图创建活动之后,它每次都会创建并启动一个新的活动实例。希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-19
    • 1970-01-01
    • 2017-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多