問題タブ [android-service]
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.
android - 別のスレッドで実行されている Android サービス
サービスは常にバックグラウンドで実行する必要があるため、ブロードキャストレシーバーを使用して起動時に開始するアプリケーションがあり、アクティビティとプロセスもあります。android:process マニフェストタグを使用して、独自のプロセスでサービスを開始しています。
UI はプレゼンテーションのニーズにのみ対応しており、アクティビティがアクティブでない場合でもユーザーがサービスを実行できるようにしたいと考えています。
この追加パラメーターを使用してサービスを開始しています。
問題は、戻るボタンまたはホームボタンを押すと、アクティビティの on destroy メソッドが呼び出され、サービスが実行されているように見えますが (タスクマネージャーに表示されます)、想定どおりに動作していないため、ネットに接続して送信する必要があることです。一部のデータですが、タイマータスクを使用してX回ごとに送信されますが、タスクが起動しないため、データは送信されません。
android - アプリの外部でサービスを実行するには、AIDL を実装する必要がありますか?
時間指定されたタスクで通知を送信するサービスがあります。このサービスは、アプリケーションの存続期間外に実行する必要がありますが、サービス機能にアクセスする必要があるのは、アプリケーションの存続期間中だけです。ローカル サービスで十分ですか、それとも AIDL を実装する必要がありますか? ありがとう。
android - 別のアクティビティを表示しているときに、ホーム ボタンを押したときにサービスが引き続きメイン アクティビティにバインドされている
わかりましたので、私が書いたアプリケーションにはサービス (GPS データを追跡する) があり、メソッド内で bindService を使用してバインドし、メソッドを使用onStart()
してサービスからバインドを解除する単一のメイン アクティビティがあります。 onStop()
unbindService(ServiceConnection)
メインアクティビティのボタンを押すと起動するオプション画面のアクティビティもあります。このオプション画面には、「バックグラウンドで実行」というチェックボックスがあります。これが true に設定されている場合、ユーザーが [ホーム] または [戻る] ボタンのいずれかでアプリケーションを終了すると、サービスは GPS をオンにせずに実行を継続します。オフ。
これを行うには、設定が true に設定されている場合は と を呼び出しthis.startForeground onUnbind
、設定が false の場合はロケーション リーダーをthis.stopForeground onRebind
停止および開始します。onUnbind
onRebind
サービスがバックグラウンドで実行されている場合は、通知も表示され、GPS がまだ実行中であり、電力を消費していることをユーザーが理解できるようにします。startForeground
この通知は、およびstopForeground
メソッドに依存して表示および停止されます。
問題は、この設定が true であるかどうかに関係なく、オプション画面を表示している場合は、サービスを続行したいのですが、その通知を表示したくないという事実にあります。したがって、ボタンを押してオプション画面に移動した場合に true に設定されたフラグを設定し、フラグが true の場合は unbindService を呼び出さないでください。
わずかな問題を除いて、これは機能します。ユーザーがオプション画面を表示しているときにホームボタンを押した場合、サービスは停止する必要がある場合は停止されず (メイン画面にバインドされているため)、実行を継続する必要がある場合は警告を表示しません。通知 (そしてもちろん、これはサービスがまだバックグラウンドにあると見なされることを意味します)。
このアプリケーションを希望どおりに動作させるにはどうすればよいですか?
android - AndroidはACTION_SENDを使用してサービスを呼び出すことができます
ギャラリーで共有ボタンが押されたときにリストにアプリケーションを表示するACTION_SENDインテントを正常に使用できました。私のアプリは基本的に選択した画像を私のコンピューターに送信し、ユーザーからの追加の入力は必要ありません。不要な手順であるリストで選択されたときにアプリを起動するのではなく、画像を送信する独自のサービスにデータを渡して、アプリの起動を回避することは可能ですか?
そうでない場合、他にどのようなオプションがありますか?アプリを起動し、写真を送信してアクティビティを閉じますか?
android - サービスから Android ハードウェア イベントをトリガーする
サービスからハードウェア イベントをトリガーすることは可能ですか? 少なくとも、アクティブなアプリが正常に処理できるように、トラックボールの動きとクリック イベントをエミュレートしたいと考えています。
どうもありがとう。
android - Android アプリに UI がない場合、別のスレッドで作業する必要がありますか?
私のアプリケーションは基本的に、起動時に (起動が完了したレシーバーによって) 開始されるサービスであり、定期的にデータを収集し、ネットワーク経由で送信し、(おそらく AlarmManager を使用して) スリープ状態にする必要があります。アクティビティはありません - UI はまったくありません。
アプリケーション ロジックを実行するために追加のスレッドを生成する理由はありますか? そうでない場合、どこでロジックを実行する必要がありますか? OnStart メソッドで?
android - 例: メッセージングを使用したアクティビティとサービス間の通信
アクティビティとサービスの間でメッセージを送信する方法の例を見つけることができませんでした。これを理解するのに非常に多くの時間を費やしました。これは、他の人が参照できるプロジェクトの例です。
この例では、サービスを直接開始または停止し、サービスから個別にバインド/バインド解除できます。サービスの実行中は、10 Hz で数値が増加します。アクティビティが にバインドされている場合Service
、現在の値が表示されます。データは整数と文字列として転送されるため、2 つの異なる方法でその方法を確認できます。アクティビティには、サービスにメッセージを送信するためのボタンもあります (increment-by 値を変更します)。
スクリーンショット:
AndroidManifest.xml:
res\values\strings.xml:
res\layout\main.xml:
src\com.exampleservice\MainActivity.java:
src\com.exampleservice\MyService.java:
android - メッセンジャークラスの使用はAIDLサービスに取って代わりますか
メッセンジャークラスは、リモートサービスの構築と利用において、AIDLの代替手段ですか?そうであれば、メッセンジャーは、ハンドラーメッセージのカスタムコマンドに関連付けられるメソッドのスレッドセーフを処理しますか?確かにいいえ、サービスはどのクライアントがどのメソッド(スレッドセーフメソッド)を必要としているかを追跡しますが、リモートサービスのサンプルhttp://developer.android.com/reference/android/app/Service.html#RemoteMessengerServiceSample は私を混乱させましたか?
android - Androidでサービスを作成する
最初のAndroidアプリを作成していますが、サービスを使用する必要があります。UIには、サービスのオン/オフを切り替えるために使用されるチェックボックス(CheckBoxPreference)があり、サービスにはアプリからのみアクセスできます(共有する必要はありません)。
これまでのところ、この機能のUIの準備ができており、イベントに応答する方法を知っています。私が知らないこと、サービスを作成する方法、またはサービスに接続する方法は何ですか?
アイデアは、サービスがイベントをリッスンし、バックグラウンドでそれらに応答し続けること、そしてアプリケーションがそれをオン/オフにするか、いくつかの設定を変更するためにのみ使用されるということです。
Webでチュートリアルを探しましたが、プロセスがわからないようです。
android - サービスから値を取得するには?
2 つのアクティビティと 1 つのサービスを持つアプリケーションを作成しています。ここで、メイン アクティビティを通じてサービスからいくつかの値を取得し、その値を 2 番目のアクティビティに送信したいと考えています。基本的に、サービスから文字列配列を取得し、その配列を次のアクティビティに送信したいと考えています。Intent.putextra() の助けを借りて、その sring 配列を次のアクティビティに送信できることを知っています。しかし、バックグラウンドで実行されているサービスから文字列配列を取得する方法がわかりません。私を助けてください..ありがとう..