web-dev-qa-db-ja.com

Androidアクティビティのないサービスとしてのアプリケーション

私は一連のアプリを作成していますが、それらすべてのバックグラウンドサービスはほぼ同じです。

このServiceのみを含むアプリを作成しようとしています。そのため、それらすべてで繰り返すことはありませんが、Activityは必要ありません。これはUIが必要ないため、ユーザーはServiceを停止しない限り閉じることができないためです。

Activityを削除しようとしましたが、アプリが実行または起動しません。 私の質問は、アプリをGoogle Play Servicesそのため、他のアプリはそのServiceを使用できます。

はい、スニペットまたはサンプルよりも大歓迎です。

28
iLyas

承知しました!サービスのみのアプリケーションを使用できない理由はありません。 ...そして、必要でない限り、AIDLに入る必要はありません。

問題は、アプリケーションを実行する方法です。アクティビティを使用してアプリケーションを作成する場合、マニフェストにIntentフィルターを追加し、ランチャーからアクティビティを開始できるようにします。アクティビティがない場合は、別の方法で開始する必要があります。

しかし、それは簡単です。次のように、他のプログラムの1つからインテントを起動します。

startService(new Intent("my.service.intent"));

...次のように、サービスがマニフェストを登録する場所:

        <service Android:name=".SomeService" >
          <intent-filter>
            <action Android:name="my.service.intent"/>
          </intent-filter>

そのインテントを使用してParcelableパラメーターをサービスに渡すことができ、サービスはインテントをブロードキャストして応答できます。

もちろん、アプリケーションとサービスの間に複雑なAPIが本当に必要な場合、startServiceとbroadcastIntentは少し不格好です。より豊かなものが必要な場合は、willAIDLとバウンドサービスを調べます。

インテントフィルターを追加するために編集

28
G. Blake Meike

はい、あなたはAIDLを探していると思います。このスレッドをご覧ください?

https://groups.google.com/forum/#!topic/Android-developers/LuWPZjPZ0sk

0
Mattias Backman