私のアプリケーションには次のシナリオがあります。私のアプリケーションには UI がありません。代わりに、起動時に開始され、継続的に実行されるサービスがあります。
メイン アクティビティなしでマニフェスト ファイルを構成するにはどうすればよいですか? アクティビティなしでアプリを起動できますか? アプリを起動すると、サービスが開始されます。これは可能ですか?
サービスを開始するために半透明のアクティビティを作成したくありません。
私のアプリケーションには次のシナリオがあります。私のアプリケーションには UI がありません。代わりに、起動時に開始され、継続的に実行されるサービスがあります。
メイン アクティビティなしでマニフェスト ファイルを構成するにはどうすればよいですか? アクティビティなしでアプリを起動できますか? アプリを起動すると、サービスが開始されます。これは可能ですか?
サービスを開始するために半透明のアクティビティを作成したくありません。
半透明のアクティビティを使用したくないと言っていましたが、これが最善の方法のようです:
Theme.Translucent.NoTitleBar
ます。setContentView()
。onCreate()
で、サービスを で開始しますstartService()
。finish()
サービスを開始したら、アクティビティを終了します。つまり、Activity を表示する必要はありません。サービスが実行されていることを確認してから終了するだけです。これは、あなたが望むように聞こえます。
サービスを起動中であること、または既に実行中であることをユーザーに示すトースト通知を少なくとも表示することを強くお勧めします。ランチャー アイコンを押しても何もしないように見えるのは、ユーザー エクスペリエンスとして非常によくありません。
はい、アプリケーションの起動時にあなたBroadcastReceiver
を呼び出すを作成するだけでそれを行うことができます。Service
これが私からの完全な答えです。
Android - 起動時にサービスを開始
アプリケーションにアイコン/ランチャーが必要ない場合は、それも可能です。アクティビティを作成しないでください
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
Service
通常どおりに宣言するだけです。
アンドロイド スタジオ バージョン 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 でサービスを自動的に開始することもできます。これは、その「構成の編集」メニューで行われます。