我已将其视为使用此类静态方法开始 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/

10-14 10:54
查看更多