問題タブ [localbroadcastmanager]

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 に答える
691 参照

android - Android: サービス内に localbroadcast レシーバーを配置する方法

ローカル放送受信機が必要なサービスがあります。アクティビティから自分のサービス onCreate への値を受け取りたいです。

注: インテントを使用して、onStartCommand() でアクティビティからサービスへの値を取得できます。しかし、ここでは、サービスの onCreate でのアクティビティからの値が必要です。

以下は私のサービスファイルです:

以下は、musicpath という値を渡すアクティビティ ファイルです。

実行後、musicpath の値が null であると表示されます。

どうやってするの?

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

android - Android: 非 UI スレッドでレシーバーを動的に登録する

Androidアプリを最適化しようとしていますが、メソッドに登録したすべてのレシーバーを、代わりonStartにメソッド内で開始されたスレッドに転送することにしました。onStartコードは次のとおりです。

この方法で受信者を登録できますか?

これまでのところ、機能しているように見えますが、それが運が良かったのか、それとも常に機能することが保証されているのかはわかりません.

0 投票する
0 に答える
1967 参照

android - IntentService を使用した Android アクティビティ通信

アクティビティと実行中の IntentService の間で双方向の通信が必要です。

シナリオは次のようなものです。アプリは実行時にアラームをスケジュールし、Web からデータを取得して処理する IntentService を開始できます。IntentService が終了する場合、次の 3 つの状況が考えられます。

  1. アプリはフォーカスされています。つまり、IntentService が完了すると、アプリはビューを新しいデータで更新する必要があります。

  2. アプリは閉じられ、IntentService が作業を終了した後に開かれるため、アプリは処理されたデータにアクセスできます。

  3. アプリは IntentService の実行中に開かれます。この場合、バックグラウンドで何かを実行しているかどうかをアクティビティから IntentService に問い合わせる方法が必要です。

1. LocalBroadcastManager に登録されるアクティビティに BroadcastReceiver を既に実装しています。IntentService が作業を終了すると、ブロードキャストを送信し、アクティビティが反応します。これはうまくいきます

2. 何もする必要はありません

3.どうしたらいいのかわからない。これまでのところ、私はこれを試しました:

活動中:

インテントサービスで

私の実装の問題は、IntentService で BroadcastReceiver が onReceive を起動しないことです。アクティビティが IntentService に何をしているのかを尋ねるための提案やより簡単な方法はありますか?

LE: アトミックブール値を取得しようとしています。サービス中:

アクティビティで、サービスの実行中にアプリを再起動する:

Androidマニフェストの場合

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

android - LocalBroadcastManager と考えられるセキュリティ関連の問題

これが私が物事を行うことを計画している方法です:

私は私Activityが登録する私のものを持っていますBroadcastReceiver

IntentServiceWeb からデータを取得して処理する があります。データのダウンロード中および処理の完了時に、サービスは、ブロードキャスト メッセージを送信することによって、実行中のアクティビティをアクティビティに通知します。データのサイズによっては、データのダウンロードと処理に時間がかかる場合があります。たとえば、最大 20 分かかる場合があります。

IntentServiceサービス内に受信者を登録することにより、アクティビティが にメッセージを送信するための同様のアプローチが使用されonStartCommandます。

これはテスト済みで、正常に動作します。BroadcastManagerグローバルとLocalBroadcastManagerについて読んだことがありますが、このアプローチのセキュリティに関連する懸念があります。私のニーズは、主にパーセル可能なオブジェクトを使用して、両方の方法でサービスとアクティビティ間の通信に厳密に関連していることを覚えておいてください。

私の質問は次のとおりです。

  1. を使用してサービスからアクティビティにデータを送信すると、どのようなセキュリティ上の問題が発生する可能性がありLocalBroadcastManagerますか? データが別のアプリに漏洩する可能性がある状況はありますか? LocalBroadcast は本当にローカルですか? 処理されたデータは非公開であり、それが私が懸念している理由です。

  2. サービスとアクティビティの間の通信に最適な方法はありますか?

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

android - 「一時停止/再開」ボタンの画像を実際の状態に同期

私の Android アプリには、長時間実行されるタスク (音楽の再生など) を実行するサービスがあり、実行中または一時停止中の 2 つの状態のいずれかになります。タスクを一時停止/再開するための単一の「一時停止/再開」画像ボタンがあります。また、(UI からではなく) 他の理由でタスクを一時停止することもできます。タスクの現在の状態 (実行中または一時停止中) によって、ボタンの外観が異なります。そのため、ボタン イメージをタスクの実際の状態と同期させる必要があります。

今、私は次の解決策を考え出しました:私のサービスには、次のようにインテントをそれ自体に送信する静的メソッドpauseとメソッドがあります:resume

doPause()anddoResume()は他の場所からも呼び出すことができるため、 / を呼び出すときに ImageButton に画像を設定することはできません。MyService.pause()ボタンMyService.resume()の画像とタスクの実際の状態が同期しなくなる可能性があります。代わりに LocalBroadcastManager を使用して、ボタンを更新する必要があるときにアクティビティを通知します。

のコードdoResume()も同様です。したがって、私のアクティビティは受信者を登録し、画像を に設定しonReceive()ます。

解決策はうまくいくようです。しかし、私の質問は、同じ目標を達成するためのより良い/より簡単な方法があるかどうかです? ベストプラクティスはありますか?

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

android - Android の LocalBroadcastManager が起動しないのはなぜですか?

このコードの何が問題なのかわかりません。

リスナーは、アクティビティの onCreate にあります。

登録は、アクティビティの onResumen にあります。

送信者はボタンにあり、ログが完全に機能していることがわかりますが、test の値は false です。

BroadcastReceiver のコード - onReceive が実行されないのはなぜですか?

0 投票する
5 に答える
1685 参照

android - Android:アプリが非アクティブなときにサービスからブロードキャストを受信する方法

サービスが実行されていて、画面にアプリが表示されると、すべて正常に動作します。私のサービスはブロードキャスト メッセージを送信し、「MainActivity」でそれらを見ることができます。しかし、ホームボタンを押して、アプリがフォアグラウンドでなくなるとすぐに停止します。サービスはまだ実行されていますが、ブロードキャストが「停止中」または「一時停止中」のアプリに届きません。これは私のコードです:

主な活動:

サービス: