0

アプリケーションがバックグラウンドに移行したらすぐにアプリを再開する必要があります。

私の解決策にはいくつかのバグがあり、パフォーマンスがあまり高くないのが好きではありません。これが私が試していることです。

    @Override
protected void onPause() {
       super.onPause();
       Intent intent = new Intent(this, MainActivity.class);
       intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
       intent.setAction(Intent.ACTION_MAIN);
       startActivity(intent);
}

これは、数秒ごとに状態を更新し、数秒ごとにWebから情報を取得しながら、多くの動的コンテンツとフラッシュコンテンツを含むWebビューをロードする単一のアクティビティアプリケーションです。したがって、アクティビティを再現するためにバックグラウンドで実行するたびに、単純かつ高速にする必要はありません。アプリケーションを再起動するには、約3〜4秒かかりますが、私には長すぎます。その秒の間にユーザーがホームの設定アイコンをクリックすると、アプリケーションは再起動しません。理由はわかりませんが、グーグルでたくさん書いた後、ここに書いています:)助けてください!

4

3 に答える 3

1

android:persistent="true"Androidマニフェストの要素で設定を試すことができます<application>が、アプリケーションがデフォルトのシステムイメージの一部としてインストールされていない場合、AndroidOSはその要求を無視するという印象を受けています。

Android SDKのドキュメントには、「アプリケーションは通常、このフラグを設定するべきではありません。永続モードは特定のシステムアプリケーションのみを対象としています」と具体的に記載されています。また、たくさんのバッテリーをかみ砕くことになります。Androidは特に、アプリケーションが使用されていないときにアプリケーションを実行し続けるための適切な方法がないように設計されていないため、OSは適切にマルチタスクを実行でき、バッテリーの使用量は合理的です。サービスはフォアグラウンド(Service.startForeground())で実行するように設定できますが、OSは、サービスが常にオンになっていることをユーザーが認識できるように、通知領域にウィジェットを提供する必要があります。

価値のあることとして、モバイルデバイスのユーザーはデスクトップのユーザーよりも遅延に寛容であるため、最初に考えたほど悪くはないかもしれません。

于 2012-10-17T23:20:12.690 に答える
1

あなたが望むのは、ホーム画面の置き換えを実装することだと思います。基本的に、インテント フィルターを追加して、ユーザーがホーム キーを押したときにブロードキャストされるインテントにアプリが応答するようにします。詳細については、こちらをご覧ください。

Android リッスン ホーム ボタン

これを行うと、ユーザーは少なくとも、アプリを実行するか標準のホーム画面アプリを実行するかを尋ねるセレクターを取得することに注意してください。ユーザーは、必要に応じてアプリをデフォルトのホーム画面アプリにすることを選択できます。

そうは言っても、アプリケーション専用のソフトウェア/ハードウェア コンボ デバイスを構築するような非常に特殊なケースでない限り、これを実行したくないことはほぼ確実です。CommonsWare が言ったことは、この点で正しいです。デバイスを乗っ取ろうとすると、間違いなくアンインストールされるか、技術に詳しくないユーザーから怒りのメールが届き、たまたまアプリをデフォルトのホーム画面に設定することになります.

于 2012-10-17T23:57:22.413 に答える
0

そのため、バックグラウンドでアクティビティを再作成するたびに単純で高速ではありません

ユーザーが HOME を押すと、プロセスはしばらく停止します。ユーザーが数分 (場合によっては数時間) 以内に戻ってきた場合でも、プロセスは残っており、ユーザーはアクティビティに戻ります。

ただし、ユーザーがかなりの時間その場を離れた場合、またはユーザーがデバイスで多くのことを行った場合 (たとえば、多数のアプリを実行した場合)、Android はプロセスを終了して、他の処理のためにメモリを解放します。 . 「実質的な期間」とは正確にどのくらいの長さであるか、または「デバイスでかなりの期間」とはどのくらいの期間であるかは、実行している他のアプリ、デバイスの RAM の量、デバイスの RAM の量など、さまざまな要因によって異なります。アプリごとのヒープ サイズは (Android OS のバージョンと画面サイズに関連付けられています) などです。

あなたがしようとしているのは、ユーザーがアプリを離れないようにすることです。あなたは、ユーザーよりもあなたが重要だと言っています。ユーザーはおそらくあなたの態度に反対するでしょう。

アプリをスリム化してメモリ使用量を減らすことで、目的を達成できる場合があります。それを行い、長期的に自分自身を助ける1つの方法は、「フラッシュコンテンツ」を取り除くことです. Jelly Bean 以降では Flash が利用できなくなったため、来年の今頃までに、大多数のユーザーがアプリを実行できなくなる可能性が十分にあります。Flash プラグインを起動すると、アクティビティの起動時間も遅くなります。

さらに、WebView の外部にあるアプリケーション ロジックについては、Traceview を使用して、どこに時間が費やされているかを把握し、パフォーマンスを向上させることができます。

于 2012-10-17T23:44:15.983 に答える