我想知道是否可以这样做:每当我们传递一个Context变量时,是否可以从Application类中获取单例引用呢?

例如,这是Application类的子类,其中的单个静态变量指向其自己的实例

public class App extends Application {

    public static mApp;

    @Override
    public void onCreate(){

        mApp = this;
    }
}


然后,当我们需要从某个地方将Context传递给方法时,我们可以做

foo(App.mApp);


Context当作应用程序变量可以吗?

最佳答案

好吧,这取决于您使用它的上下文。很多情况下,上下文是要保留所有内容,直到生命周期完成为止,然后允许垃圾回收取回其拥有的任何内容。

其他时候,上下文需要成为活动来处理生命周期回调,例如onNewIntent或onActivityResult。

在父级中保留静态实例只是避免将getApplication()强制转换为您的应用程序类型的捷径。我通常为MyApplication.getApplication()。doSomething创建一个方法,该方法将返回其自身的引用,而不是((MyApplication)getApplication())。doSomething

只是看起来更干净用于编码目的。但是我非常乐于在需要上下文的任何地方使用应用程序上下文,它最终会再次吸引您。

但是,是的,您当然可以将自己存储为要共享的静态变量,我在大多数应用程序中都这样做,但是通常是为了实现干净的可维护代码的特定快捷目的,而不是为了骗取从各种缝隙中获取上下文。

关于android - 在Application类中保存静态Context变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46557140/

10-11 03:44
查看更多