問題タブ [android-service-binding]

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 投票する
1 に答える
1868 参照

java - AOSP は、新しいカスタム システム サービスを追加します。

source.android.com ビルドから Android ソースをダウンロードし、エミュレーターで正常に実行できました。

次に、新しいシステム サービスを Android に追加します。AOSP をビルドして実行するのはこれが初めてであるため、あまり考えがありません。

この簡単な記事に従って、TestService を AOSP に追加しました。新しいコードを追加し、それに応じて SystemServer.java を変更しましたが、make コマンドは成功しませんでした。

私が実行した変更後

urrent.txt を更新してから実行しましたのエラーで失敗しました。

明らかにエラーは、サービスを登録するために SystemServer.java に数行追加した行にあります。では、追加/変更した Java ファイルのコンパイル エラーをどのように処理すればよいでしょうか。これは些細なことだと思いますが、AOSP の経験が十分ではないため、これを理解することはできません。任意の考え/提案をいただければ幸いです。

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

android - Android: Manager と SystemService のアーキテクチャ

新しいシステムサービスを開発するとき、私はそれを正しい方法で行うようにしたいと考えています。たとえば、MySystemManagerService という新しい SystemService があるとします。MySystemManager を作成する必要がありますか。(PackageManager と PackageManagerService、ActivityManager と ActivityManagerService に似ています)。

Manager と ManagerService の組み合わせによって何が達成されているのか知りたいのですが、サービスだけを使用して同じことを達成できないでしょうか。

これについての考えは、私にとって非常に役立ちます。

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

android - アプリがクリアされてもサービスを実行し続ける方法は?

ユーザーが最近の画面からアプリをクリアした場合でも、開始後にサービスがバックグラウンドで実行され続けるようにする方法はありますか? 完璧な例は Pandora のアプリです。再生を開始すると、最近の履歴から削除しても、音楽は再生され続け、通知は残ります。

私のサンプル アプリでは、サービスが実行されているかどうかを確認できるように現在の時刻を 500 ミリ秒ごとに記録する単純なハンドラーを用意しています。4 つのトグルのいずれかを使用して開始し、それぞれが 4 つのサービスのいずれかで開始するように設定します。開始タイプ (START_STICKY、START_NOT_STICKY、START_REDELIVER_INTENT、START_STICKY_COMPATIBILITY)。サービスを開始し、アプリを終了してから、最近の履歴から消去します。いずれの場合も、サービスが停止し、ループ ロギングが停止します。

MainActivity.java

RecordingService.java

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

android - アプリから Android の SystemService への通信

私は本質的に Android で SystemService を作成しようとしています。アプリからこのサービスへの相互通信はハンドラーによって処理されるべきだと読みましたか?

では、Service の関数から呼び出し元のアプリに何らかのオブジェクトを返すのはどうでしょうか? これはどのように処理できますか。

私の質問をより明確にするために、次のメソッド定義を持つ Service TestService があると想像してください。

これは、同期するために上記から私が理解していることです。通常、setValue を handleMessage() の一部として実行します。

Service インスタンスを使用してこのメ​​ソッドを呼び出し、従来の方法と同様に通常どおり処理できる getValue メソッドについてはどうでしょうか。または、非常にありそうもないハンドラーを使用する必要がありますか (私は信じています)。このシナリオで対処するための最良のプロセスを教えてください。

ありがとう

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

android - AsynTask とサービス バインディング

これは非常にばかげたものであり、コードがログキャットにエラーを出力するのが好きではないという理由だけで、私はそれについて尋ねています。

というサービスがありますBackgroundCollectorProcess。まだ報告されていないデータベース内の行を処理するのが主な仕事です。これは、XMPP 接続を介して行われます。だから、onStartCommand私は次のものを持っています:

コメント用の大量のテキスト ウォールからわかるように、愚かな logcat エラーが発生しました。それは次のとおりです。

これらは AsyncTasks です:

ここで、実行するタスク自体が非常に時間がかかる (またはかかる可能性がある) ことを考えると、それらは別のスレッドで実行する必要があります。unbindService()したがって、スレッドが終了していないため、を呼び出すことはできません。

私の質問は...いつ電話するのが最適unbindServiceですか? 明らかに、完了したらそれを呼び出そうとしましたGeoLogSenderTaskが、メイン スレッドが 2 つの asynctasks の前に終了するため、LogCat がこのばかげたメッセージを出力します。

どんな助けでも大歓迎です。ありがとう。