0
我想从非View类的静态方法访问当前活动,我想知道这个apporach是否合适:在非View类中以静态方法获取当前活动
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);
}
}
然后,每当我想获得一个当前活动的实例,我只需拨打即可方法。我知道这个代码会工作,但我只想知道这是否是一个好东西使用这种方法?
我知道我只能将活动作为参数传递给静态方法,但我想要一种访问当前活动的全局方法。
我不明白这是如何泄漏内存?当我在同一项活动中时,该字段保持不变。每当我移动到另一个活动时,该字段将被设置为新的活动。之前的活动仍然在记忆中,因为当我回去时它仍然在那里。它是否正确? – m2008m1033m
@ m2008m1033m:“当我在同一场活动中,场地保持不变,每当我移动到另一个活动时,该场地将设置为新活动” - 除了前进之外,还有更多的导航路径。至少,您需要确保在所有这些路径中,您的全局引用指向正确的活动。这包括处理未处理的异常,配置更改等等。 – CommonsWare
那么还有另外一种方法可以实现这一点,或者我必须将活动传递给任何需要它的方法吗? – m2008m1033m