私は 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;
}
このデザインの欠点はありますか?