97

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

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

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

4

4 に答える 4

131

半透明のアクティビティを使用したくないと言っていましたが、これが最善の方法のようです:

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

つまり、Activity を表示する必要はありません。サービスが実行されていることを確認してから終了するだけです。これは、あなたが望むように聞こえます。

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

于 2012-06-06T07:14:29.510 に答える
35

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

アプリケーションにアイコン/ランチャーが必要ない場合は、それも可能です。アクティビティを作成しないでください

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

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

于 2012-06-06T07:15:53.710 に答える
7

アンドロイド スタジオ バージョン 2.3

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

まず、Android Studio でアクティビティなしでプロジェクトを作成します。次に、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 Studio が不平を言うことなく、サービスをインストールできます。

インストールすると、サービスは実行されませんが、この adb shell コマンドでサービスを開始できます...

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

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

ps | grep whatever

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

于 2017-10-19T23:57:59.357 に答える