当前位置: 首页 > 知识库问答 >
问题:

具有全局上下文的Android单例

崔琦
2023-03-14

共有1个答案

汤承允
2023-03-14

问题的另一个编辑(2016)

最近(从2016年开始)我一直在做的事情,也是我对任何开发人员的建议,是:

只要用匕首2。任何需要上下文的地方都需要:

@Inject Context context;
public class App extends Application {
   private static App instance;
   public static App get() { return instance; }

   @Override
   public void onCreate() {
      super.onCreate();
      instance = this;
   }
}
private static SingletonDemo instance;

public static SingletonDemo get() {
   if(instance == null) instance = getSync();
   return instance;
}

private static synchronized SingletonDemo getSync() {
   if(instance == null) instance = new SingletonDemo();
   return instance;
}

private SingletonDemo(){
   // here you can directly access the Application context calling
   App.get();
}

原始答案

文档所建议的是使用普通的单例模式

 public class SingletonDemo {
    private static SingletonDemo instance = null;

    private SingletonDemo() {       }

    public static SingletonDemo getInstance() {
            if (instance == null) {
                 instance = new SingletonDemo ();
            }
            return instance;
    }
}

并在其中包含如下所示的方法:

 private Context context;
 init(Context context){
    this.context = context.getApplicationContext();
 }
 类似资料:
  • 问题内容: 当您长按Android中的某个按钮时,将显示一个上下文菜单。我想为该系统中的所有菜单添加一些内容。 例如,系统使用“复制和粘贴”来执行此操作。我想添加自己的文件,并将其显示在每个应用程序中。 问题答案: 当前,Android不支持此功能,如果没有特定活动实现您公开的意图或活动,则无法在系统级别全局覆盖或挂钩功能。即使在发布意图的情况下,除非运行的应用程序是使用者也没关系……所有基本系统

  • 我正在使用spring框架编写一个java项目。我有我的bean.xml,我在bean.xml中定义了我的类。如果我想创建一个对象,那么我将创建应用程序上下文并调用所需的bean。对于每个类,我都在创建应用程序上下文并加载bean.xml。我不想在每个类中创建这个应用程序上下文。我想要全局上下文对象。现在我在每节课上都这样使用: 但是我需要加载一次bean.xml,我想从任何地方(全局)调用这些上

  • SocketIO活动处理不同于路由处理,在于它引入了许多容易混淆的东西,围绕着SocketIO什么可以做,什么不可以做。最主要的区别就是SocketIO活动发生在单个长期运行在上下文的请求之中。 尽管有所不同,Flask-SocketIO将环境改造成类似于常规HTTP请求,使SocketIO活动处理更加轻松。接下来的列表描述了什么将会生效,什么不会。 在活动处理函数之前推送应用的上下文使得curr

  • 例如,我想为Acc部门创建“Add Employee”,为IT支持创建“Add Supporter”。 需要根据treeitem的名称显示上下文菜单。

  • 我有一个脚本,其中为页面上的每个元素调用一个函数。它可以很好地处理单独的函数调用,但如果我试图用唯一的选择器调用函数,它就不能正常工作。我如何实现一个循环,为每个html块单独调用函数,但只使用一个类(例如,如果我有X元素),而不使用像现在这样的单独的选择器(startLoop('#stack1');startLoop('#stack2');ecc.ecc.)对它们进行寻址(startLoop('

  • 问题内容: 我想全局拦截某些错误情况,以防止控制器自己处理错误。我认为我需要HTTP拦截器,但是我不确定如何从我的控制器中处理错误。 我有一个像这样的控制器: 和这样的HTTP拦截器: 这与浏览器重定向到“ /错误”路径一样有效。但在承诺抓的 也 执行了,我不希望这样。 我知道我可以编写代码,使其忽略404错误,但这是无法维护的。假设我进行修改以同时处理500个错误,那么我将不得不再次进行修改(以