我已将其视为使用此类静态方法开始 Activity 的常见做法
class HomeScreenActivity{
....
....
public static void startHomeActivity(Context context){
Intent intent = new Intent(context,HomeScreenActivity.class);
activity.startActivity();
}
....
....
}
class LoginActivity{
....
....
public void startActivity(){
HomeScreenActivity.start(this);
}
....
....
}
这是一个好习惯吗,它会造成内存泄漏吗?它会产生什么问题?
最佳答案
如果这是您要的问题,这不是一个坏习惯。
不好的做法是,例如,在静态字段中具有上下文变量,这会造成泄漏。例如:
public class App extends Application {
private static Context mContext;
public static Context getContext() {
return mContext;
}
@Override
public void onCreate() {
super.onCreate();
mContext = this
}
}
这是一个不好的做法。 并且android studio应该警告您(静态上下文字段)。例如,可以使用
WeakReference
来解决。但是由于示例的方法是静态的,并且上下文作为参数提供,所以它没有任何问题。如果希望该方法是静态的,则最好将 Activity /上下文对象作为参数传递。
如果您怀疑存在泄漏,则可以重写该上下文的onDestroy方法以找出何时存在泄漏(由于仍存在对它的引用,因此不会调用onDestroy)。另外,可以通过查看Memory Profiler和/或LeakCanary库来发现泄漏。
关于java - 从其他 Activity 中使用静态方法开始 Activity 是一种好习惯吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59765912/