4

私のアプリではfinish()、アクティビティ間に多くのメソッドを実装しています。私はこれを行う必要がありますか?ユーザーのバッテリーを節約するのに役立っているので、そう思います。本当?

また、Google アプリは、アプリケーションに終了ボタンを実装していません。しかし、多くのゲームには終了ボタンがあります。アプリは終了ボタンを実装する必要がありますか? それとも、アプリでは必要ないかもしれませんが、ビデオゲームでは必要ですか?

4

4 に答える 4

2

プログラムでアクティビティを終了することは絶対に問題ありません。ただし、コンテキスト リークが発生するため、アクティビティへの参照をその外部に保存しないでください (相互にアクティビティを終了すると言っている場合)。コンテキスト リークごとに、約 1 メガバイトのメモリが消費されます。詳細はこちら: http://android-developers.blogspot.com/2009/01/avoiding-memory-leaks.html

登録 「終了」ボタン - 実際、それを実装するのは悪い考えです。一部のデータを RAM に保持すると、CPU でコードを実行してそのデータを作成するよりもはるかに少ない電力で済みます。そのため、最初の起動時にデータが作成されると、起動のたびに再実行するのではなく、メモリに保持することをお勧めします。これにより、バッテリーが大幅に節約されます。そのため、Android のライフサイクルはそのように設計されています。アプリを強制終了すると、メモリからデータが消去されます。つまり、次回の起動時に、CPU がデータを再作成するためにバッテリーを消費します。「終了」オプションを許可することで、ユーザーを助けるのではなく、実際に害を及ぼすことになります。ちなみに、 Android アプリで exit を適切に実装するのは難しいため、いずれにせよ機能しません ;)

-- 更新: Renaudは良い点を追加しました。私は完全に同意します。彼の投稿を参照してください。

于 2011-07-01T21:32:46.040 に答える
1

プログラムでアクティビティを終了するかどうかの決定は、アプリケーションに必要なナビゲーションモデルに基づいて行う必要があります。ユーザーがアクティビティに戻れないようにする場合にのみ、アクティビティを終了してください。

資源を節約するために活動を終えることは、それについて考える正しい方法ではありません。代わりに、onResume、onPause、onStart、onStopなどのActivityライフサイクルメソッドでリソースを消費/解放するようにアクティビティを設計する必要があります。

Androidユーザーは通常、戻るボタンを使用して画面をバックアウトまたは「終了」します。

于 2011-07-01T21:52:27.977 に答える
1

私はJBMを引用します:

プログラムでアクティビティを終了することは絶対に問題ありません。

…しかし、名目上のケースでは、それは必要ではなく、さらに、Android UI のエルゴノミーとは正反対になる可能性があります。開発ガイドを注意深く読むことをお勧めします: http://developer.android.com/guide/practices/ui_guidelines/activity_task_design.html

特に。BACK キーと HOME キーを使用したアクティビティからの移動セクション。

終了ボタンの実装については、終了オプションを実装すると、Android の人間工学全体について残念ながらユーザーが失望することにつながるという事実について、JBM にもう一度同意します。

私が言いたいのは、このドキュメントは、たとえ完全でなくても、UI デザイン、グッド プラクティス、コーディング ルール、および最適化のヒントに関する大量かつ十分な情報を提供しているということです。それは読むべきです。

-- 更新: 人気のあるアングリーバード アプリケーションは、終了オプションを実装していませんが、戻るボタンを使用して、ユーザーに終了を促すプロンプトを表示します。それは本当に良いアプローチのようです。

于 2011-07-01T23:04:22.780 に答える
1

ユーザーが要求または期待しない限り、アクティビティを終了することはお勧めできませんが、それは特定のアプリケーションに大きく依存しています。

戻るボタンとホームボタンに頼る場合、終了ボタンは必要ありません。それにもかかわらず、ゲームを Android だけでなく任意のタッチスクリーンで実行したい場合は、便利な場合もあれば、必要になる場合もあります。

于 2011-07-01T20:57:40.793 に答える