Android アプリをしばらくプログラミングした後 (1 つは市場にアップロードされ、4,7 の評価で 3,000 以上のアクティブなインストールがあります)、どうすれば自分のアプリをさらに素晴らしいものにすることができるか疑問に思い始めました。本当に新しい、世界を変える機能を追加することはできないことに気づき、パフォーマンス、ほぼすべてを最適化する方法、最適な CPU/メモリ使用率を見つける方法などを調べ始めました。
とにかく、画面を回転させる場合に onCreate が実行されることがわかりました。これは非常に論理的ですが、いくつかの(大きな)計算があり、回転するたびにやり直す必要はありません。これの 1 つは、4 つの列を持つ 6500 行の csv を反復処理することです。データを含む 2 列はオートコンプリート アダプターに使用され、別の 2 列は機能のオプションですが、初期化する必要があります。現在、これは onCreate の最後にトリガーされる asynctask で実行され、非常に優れた CPU を備えた HTC Desire S で約 3 秒かかります。確かに私は望んでいません... UIがクラッシュすることはありませんが、その秒が終わるまでオートコンプリートはありません。
SO:私の質問は、コンストラクター(標準のJavaのような)などの別のメソッドでこれを行うことができますか、それともアクティビティの特別なライフサイクルのため、それは悪い習慣ですか?つまり、「コンストラクター」が実行される方法でアクティビティをインスタンス化し、その直後に onCreate が実行されます。ローテーションの場合、私の「コンストラクター」は再び実行されませんが、onCreate は実行されます。安定性は私の一番の目標です。または、これを行う良い方法はありますか?これとまったく同じように作成されたもので、私が気づいていないものは何ですか? 私は本当にこの問題で多くのことを改善したいと思っています。できればこの経験のある人からの助けを本当に感謝していますが、どんな助けも大歓迎です! :)
たとえば、この方法で新しいアクティビティを作成したい場合は、次のようにします。
new MyActivity(some parameters);
コンストラクターが実行され、次のように終了します。
startActivity(new Intent(context, MyActivity.class));
このようにして、コンストラクターが実行され、変数が初期化され (ビューなどに接続されません)、その後、アクティビティは必要なときにいつでも onCreate 変数を実行できます。
構文が間違っている場合はご容赦ください。ファストタイプしただけです:)