アプリケーションを終了するのは好ましくないですか? 質問する

アプリケーションを終了するのは好ましくないですか? 質問する

Androidの学習を続ける中で、私は以下を読んで:

質問:アプリケーションを終了するためのメニュー オプションを用意しない限り、ユーザーはアプリケーションを終了する選択肢がありますか? そのようなオプションが存在しない場合、ユーザーはどのようにしてアプリケーションを終了するのですか?

回答: (Romain Guy):ユーザーは何もする必要はありません。システムが自動的に処理します。アクティビティ ライフサイクル (特に onPause/onStop/onDestroy) はそのためにあるのです。何をするにしても、「終了」または「終了」アプリケーション ボタンを配置しないでください。Android のアプリケーション モデルでは役に立ちません。これはコア アプリケーションの動作方法にも反します。

へへ、Android の世界で一歩踏み出すたびに、何らかの問題に遭遇します =(

どうやら、Android ではアプリケーションを終了することはできないようです (ただし、Android システムは、いつでも必要に応じてアプリケーションを完全に破壊することができます)。これはどういうことでしょうか。ユーザーが終了したいときに終了できる「通常のアプリ」として機能するアプリを作成するのは不可能だと私は思い始めています。これは、OS に任せるべきことではありません。

私が作ろうとしているアプリは、Androidマーケット向けのアプリではありません。一般の人が「広く使う」ためのアプリではなく、非常に狭いビジネス分野で使われることを想定したビジネスアプリです。

Android プラットフォームは Windows Mobile や .NET に存在する多くの問題に対処しているので、私は実際に Android プラットフォーム向けの開発をとても楽しみにしていました。しかし、先週は私にとっては少々気が進まないものでした... Android を放棄しなくて済むといいのですが、今のところあまり良い状況ではありません =(

本当にアプリケーションを終了する方法はありますか?

ベストアンサー1

これは最終的にあなたの質問に繋がりますが、まずは、この記事を書いている時点ですでに与えられているさまざまな回答に対するあなたのさまざまなコメントで提起されているいくつかの問題について触れておきたいと思います。あなたの考えを変えるつもりはありません。むしろ、これらは将来この投稿を読む他の人のためにここにあります。

重要なのは、Android がアプリをいつ終了するかを決定することを許可できないことです。それはユーザーの選択に委ねられる必要があります。

何百万人もの人々は、必要に応じて環境がアプリケーションを終了するモデルに完全に満足しています。これらのユーザーは、Web ページを「終了する」ことやサーモスタットを「終了する」ことを考えないのと同じように、Android アプリを「終了する」ことについても考えません。

iPhone ユーザーもほぼ同じで、iPhone ボタンを押しても、アプリが終了したように「感じる」とは限りません。多くの iPhone アプリは、たとえアプリが実際にシャットダウンされていたとしても、ユーザーが中断したところから再開するからです (現時点では、iPhone では一度に 1 つのサードパーティ アプリしか許可されていないため)。

上で述べたように、私のアプリでは多くのことが行われています (デバイスにプッシュされるデータ、常に存在するはずのタスクのリストなど)。

「常に存在するはずのタスクを含むリスト」が何を意味するのかはわかりませんが、「データがデバイスにプッシュされる」というのは楽しいフィクションであり、いかなる場合でもアクティビティによって実行されるべきではありません。AlarmManager信頼性を最大限に高めるには、スケジュールされたタスク (経由) を使用してデータを更新してください。

ユーザーはログインしますが、電話がかかってくるたびにログインするわけにはいきませんし、Android はアプリを強制終了することにします。

これに対処する iPhone および Android アプリケーションは多数あります。通常、これは、ユーザーに毎回手動でログインさせるのではなく、ログイン資格情報を保持するためです。

たとえば、アプリケーションを終了するときにアップデートをチェックしたい場合

これは、どのオペレーティング システムでも間違いです。アプリケーションが「終了」する理由は、OS がシャットダウンしているためであり、更新プロセスが途中で失敗する可能性があります。一般的に、これは良いことではありません。起動時に更新をチェックするか、完全に非同期で (たとえば、スケジュールされたタスクを介して) 更新をチェックし、終了時には更新をチェックしないでください。

いくつかのコメントでは、戻るボタンを押してもアプリが終了しないことが示唆されています (上記の私の質問のリンクを参照してください)。

[戻る] ボタンを押しても、アプリは終了しません。ユーザーが [戻る] ボタンを押したときに画面に表示されていたアクティビティが終了します。

ユーザーが終了したいときだけ終了するべきです。他の方法では決して終了してはいけません。Android でそのように動作するアプリを書けないのであれば、Android は本物のアプリを書くのに使えないと思います =(

そうなるとWebアプリケーションもダメになる。ウェブOS、私が彼らのモデルを正しく理解していれば (まだ試す機会がありませんが)、その通りです。これらすべてにおいて、ユーザーは何も「終了」せず、ただ立ち去るだけです。iPhone は、現時点では一度に実行できるのは 1 つだけ (いくつかの例外を除く) という点で少し異なり、立ち去るという行為は、アプリのかなり即時の終了を意味します。

本当にアプリケーションを終了する方法はありますか?

他の皆さんがおっしゃったように、ユーザー (BACK 経由) またはコード ( 経由finish()) は、現在実行中のアクティビティを閉じることができます。適切に作成されたアプリケーションの場合、ユーザーは一般に、Web アプリケーションを使用するために「終了」オプションを必要としないのと同様に、他のものを必要としません。


定義上、アプリケーション環境は 2 つとして同じものはありません。つまり、新しい環境が出現し、他の環境が埋もれていくにつれて、環境の傾向がわかります。

たとえば、「ファイル」という概念を排除しようとする動きが広がっています。ほとんどの Web アプリケーションでは、ユーザーにファイルについて考えさせることはありません。iPhone アプリでは、通常、ユーザーにファイルについて考えさせることはありません。Android アプリでは、通常、ユーザーにファイルについて考えさせることはありません。などなど。

同様に、アプリを「終了する」という概念を排除しようとする動きが広がっています。ほとんどの Web アプリケーションは、ユーザーにログアウトを強制するのではなく、一定時間操作が行われないと暗黙的にユーザーをログアウトさせます。Android でも同じで、程度は低いものの iPhone (およびおそらく WebOS) でも同じです。

これには、アプリケーション設計に重点を置き、ビジネス目標に焦点を当て、以前のアプリケーション環境に結びついた実装モデルに固執しないことが必要です。これを行う時間や意欲のない開発者は、既存のメンタル モデルを壊す新しい環境に不満を抱くことになります。これは、嵐が山を通り抜けるのではなく、山の周りを流れる山のせいではないのと同じように、どちらの環境のせいでもありません。

例えば、次のような開発環境があります。ハイパーカードSmalltalkでは、アプリケーションと開発ツールが1つのセットアップに混在していました。このコンセプトは、アプリの言語拡張(例:VBAエクセルAutoCAD での Lisp)。そのため、アプリ自体に開発ツールが存在することを前提としたメンタルモデルを考案した開発者は、モデルを変更するか、モデルが当てはまる環境に自らを制限する必要がありました。

したがって、次のように書くと:

私が発見した他の厄介な事柄と合わせて、Android 向けのアプリの開発は実現しないと思います。

現時点では、それがあなたにとって最善の策であるように思われます。同様に、Android で報告された問題のいくつかは Web アプリケーションでも発生するため (「終了」がないなど)、アプリケーションを Web に移植することはお勧めしません。または、逆に、いつかアプリケーションを Web に移植すると Web アプリケーションのフローが Android に適していることがわかり、そのときに Android への移植を再検討できるかもしれません。

おすすめ記事