web-dev-qa-db-ja.com

メインアクティビティなしでAndroidアプリケーションを起動し、アプリケーションの起動時にサービスを開始します

私のアプリケーションには次のシナリオがあります。アプリケーションにUIはありません。代わりに、起動時に開始され、継続的に実行されるサービスがあります。

メインアクティビティなしでマニフェストファイルを構成するにはどうすればよいですか?アクティビティなしでアプリを起動できますか?アプリを起動すると、サービスが開始されます。これは可能ですか?

サービスを開始するために半透明のアクティビティを作成したくありません。

78
Meher

あなたは半透明のアクティビティを使用したくないと言いましたが、これがこれを行う最良の方法のようです。

  1. マニフェストで、アクティビティテーマをTheme.Translucent.NoTitleBarに設定します。
  2. アクティビティのレイアウトを気にせず、setContentView()を呼び出さないでください。
  3. アクティビティのonCreate()で、startService()を使用してサービスを開始します。
  4. サービスを開始したら、finish()でアクティビティを終了します。

つまり、アクティビティを表示する必要はありません。サービスが実行されていることを確認してから終了するだけで、希望どおりに聞こえます。

少なくとも Toast通知 を表示することを強くお勧めします。これは、サービスを起動していること、または既に実行中であることをユーザーに示すことです。あなたがそれを押すと何もしないように見えるランチャーアイコンを持つことは非常に悪いユーザーエクスペリエンスです。

115

はい、アプリケーションの起動時にBroadcastReceiverを呼び出すServiceを作成するだけで、それを行うことができます。これが私からの完全な答えです。
Android-起動時にサービスを開始

アプリケーション用のアイコン/ランチャーが必要ない場合は、それを行うこともできますが、アクティビティを作成しないでください

<intent-filter>
    <action Android:name="Android.intent.action.MAIN" />
    <category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>

Serviceを通常どおりに宣言するだけです。

30
Lalit Poptani

アクティビティやサービスのないアプリを作成する理由は、起動する必要のないウィジェットアプリを作成することです。
プロジェクトを開始したら、アクティビティを作成しないでください。プロジェクトを作成したら、実行をクリックします。 Android studioはNo default activity foundと言います。

をクリックします構成の編集および起動オプション部分で起動値を設定しますなしに。次に、[OK]をクリックしてアプリを実行します。 アプリはアプリメニューに表示されません

3
Mahdi-Malv

Android Studioバージョン2.3

いくつかの簡単な手順に従って、メインアクティビティなしでサービスを作成できます。このアプリをAndroid St​​udioからインストールし、通常のアプリと同様にデバッグできます。

最初に、アクティビティなしでAndroid St​​udioでプロジェクトを作成します。次に、Serviceクラスを作成し、AndroidManifest.xmlにサービスを追加します

<application Android:allowBackup="true"
    Android:label="@string/app_name"
    Android:icon="@mipmap/ic_launcher"
    Android:roundIcon="@mipmap/ic_launcher_round"
    Android:supportsRtl="true"
    Android:theme="@style/AppTheme">
    <service Android:name="com.whatever.myservice.MyService">
        <intent-filter>
            <action Android:name="com.whatever.myservice.MyService" />
        </intent-filter>
    </service>
</application>

ここで、「実行」ボタン(緑色の矢印)の隣のドロップダウンで「構成の編集」に進み、「起動オプション」内で「なし」を選択します。これにより、Android St​​udioがメインアクティビティがないという文句を言うことなくサービスをインストールできます。

インストールすると、サービスは実行されなくなりますが、このadb Shellコマンドで開始できます...

am startservice -n com.whatever.myservice/.MyService

で実行されていることを確認できます...

ps | grep whatever

まだ試していませんが、Android St​​udioでサービスを自動的に開始することもできます。これは、「構成の編集」メニューで行います。

3
Merc