【问题标题】:Get Application instance from static method从静态方法获取应用程序实例
【发布时间】:2017-04-11 13:28:28
【问题描述】:

在Android中使用静态方法获取Application后继实例是否正确。我在一些开源项目中看到过这种方法:VLCShuttle

public class MyApplication extends Application {

    private static MyApplication sApplication;

    public static MyApplication getInstance() {
        return sApplication;
    }

    @Override
    public void onCreate() {
        super.onCreate();

        sApplication = MyApplication.this;
    }

}

【问题讨论】:

  • 我也在我的应用程序中这样做,它工作得很好。基本上,只要应用程序正在运行,您就可以使用该实例。
  • 请明确目的,然后我们可以引导更多进入主题。还有一种使用依赖注入 (DI) 的替代方法,例如 Dagger 在这种情况下很有用。
  • 我将用它来获取资源,展示祝酒词。我现在绝对不想使用 Dagger。

标签: java android


【解决方案1】:

是的。这种方法是正确的。这是您正在遵循的单例模式。因为static 变量始终是正确的方法,因为它是您想要在任何地方维护的单一状态。

只要您的应用程序从不在多个进程中运行,它也是安全的。每个进程有严格的一对一申请比例。

我也在我的所有应用程序中使用它。

【讨论】:

  • 不错的答案,很久以前我就看到了你的最后迹象;)
  • 但是这种方法会在 Android Studio 中发出警告,即这可能会泄漏内存
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-30
  • 2012-11-12
  • 1970-01-01
  • 2011-02-27
  • 2012-10-04
相关资源
最近更新 更多