問題タブ [android-intentservice]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2066 参照

android - デバイスのメモリ不足が原因でアプリが終了する

インテント サービスを使用していくつかのファイルをバックアップするアプリを開発しています。アプリは正常に動作し、クラッシュしません。ただし、アプリをバックグラウンドで起動すると、アプリが 2 日間実行されている場合や、1 晩だけ実行されている場合にアプリが終了することがあります。

そのデバイスのメモリが不足していて、アプリが正しく閉じないためですか?

つまり、アプリでこの状態を処理し、最後のプロセスが停止した理由をユーザーに表示します。

0 投票する
3 に答える
2778 参照

android - メイン アクティビティが破棄されたときに再作成された Android サービス

私はAndroidサービスに問題があります。アプリを閉じると、メインのアクティビティが閉じられ、サービスが再作成されます.oncreatedメソッドは自動呼び出しで、onstartも自動呼び出しです.

これは私の活動コードです

これはサービスコードです:

AndroidManifest.xml

助けてください。私はその3日間に固執しました。

Thx、アロン

0 投票する
1 に答える
870 参照

android - Androidアクティビティがすでに実行されているときにIntentServiceからアクティビティに配列を渡す方法

5 分ごとに実行される IntentService があります。このサービスは、サーバーにアラートがあるかどうかを確認します。アラートは、リストに表示するアクティビティに渡す TwoDimensional ArrayList にあります。

現時点で、アプリを起動して 1 時間実行すると、スタックに 12 個のアクティビティが存在します。すべてのアクティビティを閉じるには、戻るボタンを 12 回クリックする必要があります。

私がしたいのは、新しい ArrayList がスタック上の元のアクティビティに渡され、その listView が新しいデータで更新されることです。

私はonNewIntentをオーバーライドし、アダプターでnotifyDataSetChangedを呼び出す必要があると確信しています。

これを行う方法はありますか?私は正しい線にいますか?

.

. [編集1]

.

[編集2]

edit3

0 投票する
1 に答える
821 参照

android - 通知からの PendingIntent を受信して​​いません

onHandleIntent(Intent) 内で同期的に実行時間の長い作業を行う IntentService を取得しました。そのため、サービスが実行されている限り、通知を表示しています。ユーザーが通知をタップしたら、サービスを停止したいと思います。

だからここに私が得たものがあります。サービスの作成後に登録されるブロードキャスト レシーバー クラス。サービスが何らかの作業を行うときに表示される、保留中の意図を持つ通知。

しかし、どういうわけか、ユーザーが通知をタップすると、ブロードキャストの意図が得られません。何か案が?

テスト用に簡単に再利用できるコードの一部を次に示します。

サービスは私のアクティビティ内から開始されます:

このようなサービスを停止するというアイデアは、この投稿から来ています。

0 投票する
1 に答える
58 参照

android - Android アプリのアーキテクチャ

以下で構成される単純なアプリがあるとします。

書籍のリストを表示するためのリスト ビューを持つ Fragment

フラグメントを保持するアクティビティ

表示する書籍のリストを取得するためにどこかのサーバーにクエリを発行する Web コンポーネント

これらのコンポーネントを一緒に配線する最良の方法は何ですか? いくつかのオプションが表示されますが、どれが最適ですか (これに関するベスト プラクティスはありますか)?

  1. アクティビティは Web サーバーにクエリを発行し (AsynTask / 新しいスレッドを介して)、結果をフラグメントにプッシュします。

  2. UI なしで別のフラグメントを作成し、この問題を AsyncTask / new Thread 経由でクエリに発行します (オプション 1 と同様ですが、画面の回転の問題で破棄されるアクティビティが削除されます)

  3. フラグメントは Web サーバーを直接呼び出し、アクティビティは何もしません

  4. インテント サービスを追加してクエリを実行し、結果を次のいずれかにブロードキャストします。

    a) アクティビティ - それらを Fragment にプッシュする

    b) フラグメントはブロードキャストを直接受信します

これらのいずれかが他のアプローチよりも優れていると考えられていますか?

さまざまなフラグメント関連の投稿で、「フラグメントをビューと見なし、アクティビティをコントローラーと見なす」と述べられているため、オプション 3 はあまり良い考えではないことが示唆されます。

オプション 2 は、アクティビティをコントローラーと見なすハイブリッドのように見えます。これは、「コントローラー」機能の一部を別のフラグメントに委任するようなものですが、決定的に「ビュー」フラグメントではありません。

オプション 4 は興味深いように思えますが、すべての結果をブロードキャストする必要があるという問題があります (一方、1 と 2 では実際のオブジェクトがあります)。LocalBroadcastManager を使用してブロードキャストをより効率的 (かつ安全) にすることはできますが、それでもすべての Web 結果をブロードキャストする必要があります。

軽量の Parcelable オブジェクトに変換される (たとえば) JSON メッセージではなく、イメージ (実質的なもの) をダウンロードするとしたらどうなるでしょうか?

私が言ったように、私はこれを行う多くの方法を考えることができます -正しい方法は何だと思いますか?

0 投票する
1 に答える
51 参照

android - サービスを使用して位置データを使用するにはどうすればよいですか?

アプリのバックグラウンドで長時間実行するタスクがあるため、サービスを実装してジョブを実行しようとしています。

このサービスはLocationClientインスタンスからの位置データを使用し、各リクエストは PendingIntent で起動されます。最小ターゲット バージョンでは、新しい LocationServices を使用できません。Android のドキュメントでは、アプリケーションがシステムによって強制終了された可能性があるため、LocationClient.requestLocationUpdates(...) メソッドの PendingIntent バージョンを使用するようにアドバイスされています。

同様の説明に一致する私が見たすべての は、IntentService を実装し、インテント KEY_LOCATION_CHANGED を余分に受け取る onHandleIntent(Intent intent) をオーバーライドします。ただし、 Service にはそのようなメソッドはなく、そのようなインテントは onStartCommand(...) に配信されません。

このコードは、位置データのリクエストを設定するために使用され、LocationRequester オブジェクトから取得されます (一度に実行されるこれらのオブジェクトの数に制限はありませんが、1 つだけが生成されてリクエストを行った場合の結果は同じです)。

上記のコードで MyLocation*Intent*Service を使用すると、インテントが MyLocationIntentService.onHandleIntent(intent) に配信され、KEY_LOCATION_CHANGED エクストラを探します。サービスに変更を加えた後、位置データを使用する方法がわかりません。リクエストが行われたときに LocationClient が接続されていることを確認しました。

onStartCommand(...) を監視しようとしましたが、インテントが配信されません。私の質問は、サービスの実装で位置データをどのように使用するのですか?

不明な点やさらに詳しい情報が必要な場合は、お知らせください。ありがとう!