我想从非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()
方法。我知道这段代码会起作用,但我只是想知道使用这种方法是否是一件好事?
我知道我可以将活动作为参数传递给静态方法,但我想要一种访问当前活动的全局方式。
答案 0 :(得分:1)
我知道这段代码会起作用,但我只想知道使用这种方法是否有用?
你正在泄露记忆。只要您从Application
引用该活动,该活动的实例及其所保留的所有内容都不能进行垃圾回收。
除此之外,Application
并没有真正帮助你。如果你要泄漏内存,至少在实现方面更有效率,并使用一个简单的static
字段。