1

私は Android フレームワークを学び始めましたが、私の最大の問題は、アクティビティのライフサイクルに関する地獄です。したがって、ユーザーが画面を回転させると、アプリケーションがクラッシュします。私が理解しているように、通常のアクティビティ ライフ サイクルに加えて、Android は強制インスタンス削除および部分回復サービスをハッキングしましたが、これはバグではなく機能です。

したがって、メンバー変数を安全に保ちたいだけなので、Application クラスに格納し始めることを考えました。

したがって、次の方法でプログラムをリファクタリングしたいと思います。

独自のアプリケーションを作成します

public class MainApp extends Application {
   LoginActivityData loginActivityData; // create data "segment" for every activity
   FirstActivityData firstActivityData;
   ...

   public static MainApp getInstance(final Context context) {
       if (context == null) return null;
       final Context app = context.getApplicationContext();
       return app instanceof MainApp ? (MainApp) app : null;
   }

}

アクティビティとフラグメントでは、MainApp クラス以外のメンバー変数の使用をやめました。

public class LoginActivity extends Activity {
   LoginActivityData loginActivityData;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    loginActivityData = MainApp.getInstance(this).loginActivityData;
}

このデザインの欠点はありますか?

4

1 に答える 1