在非View类中以静态方法获取当前活动

时间:2016-03-01 14:42:55

标签: android android-activity

我想从非View类的静态方法访问当前活动,我想知道这个apporach是否合适:

class MyApplication extends Application {
    private static MyActivity mCurrentActivity;
    private static void setCurrentActivity(MyActivity currentActivity) {
        mCurrentActivity = currentActivity;
    }
    private static MyActivity getCurrentActivity() {
        return mCurrentActivity;
    }
}

然后,我将创建一个名为MyActiviy的自定义活动,并将其用于我的所有应用程序活动,这就是MyActivity将会是这样的:

class MyActivity extends AppCompatActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        MyApplication.setCurrentActivity(this);
    }
}

然后,每当我想获得当前活动的实例时,我只需调用MyApplication.getCurrentActivity()方法。我知道这段代码会起作用,但我只是想知道使用这种方法是否是一件好事?

我知道我可以将活动作为参数传递给静态方法,但我想要一种访问当前活动的全局方式。

1 个答案:

答案 0 :(得分:1)

  

我知道这段代码会起作用,但我只想知道使用这种方法是否有用?

你正在泄露记忆。只要您从Application引用该活动,该活动的实例及其所保留的所有内容都不能进行垃圾回收。

除此之外,Application并没有真正帮助你。如果你要泄漏内存,至少在实现方面更有效率,并使用一个简单的static字段。