アプリケーションに次のシナリオがあります。私のアプリケーションにはUIがありません。代わりに、起動時に開始され、継続的に実行されるサービスがあります。
メインアクティビティなしでマニフェストファイルを構成するにはどうすればよいですか?アクティビティなしでアプリを起動できますか?アプリを起動すると、サービスが開始されます。これは可能ですか?
サービスを開始するために半透明のアクティビティを作成したくありません。
回答:
半透明のアクティビティを使用したくないとおっしゃっていましたが、これが最善の方法です。
Theme.Translucent.NoTitleBar
ます。setContentView()
。onCreate()
、からサービスを開始しますstartService()
。finish()
サービスを開始したら、アクティビティを終了します。つまり、アクティビティは表示されている必要はありません。単にサービスが実行中であることを確認してから終了することができます。
少なくともToast通知を表示して、サービスを起動していること、またはサービスが既に実行中であることをユーザーに示すことを強くお勧めします。ランチャーアイコンを押しても何も実行されないように見えるのは、非常に悪いユーザーエクスペリエンスです。
はい、アプリケーションの起動時にBroadcastReceiver
を呼び出すを作成するだけでそれを行うことができますService
。ここに私が与えた完全な答えがあります。
Android-起動時にサービスを開始
アプリケーションにアイコン/ランチャーが必要ない場合は、それも実行できます。アクティビティを作成しないでください
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
ちょうどあなたを宣言しService
、通常宣言として。
Service
起動時にonkerを起動すると、質問者は問題ないようですが、mainがない方法を知りたいActivity
のService
ですが、ランチャーアイコンが押されたときにが実行されていることを確認してください。
アクティビティやサービスのないアプリを作成する理由は、起動する必要のないホームスクリーンウィジェットアプリを作成することである可能性があります。
プロジェクトを開始したら、アクティビティを作成しないでください。プロジェクトを作成したら、実行を実行します。Androidスタジオは言うでしょうNo default activity found
。
クリックして[設定の編集を(から実行メニュー)とで起動オプションパーツセット起動に値を何もありません。次に[OK]をクリックしてアプリを実行します。
(ランチャーアクティビティがないため、[アプリ]メニューにアプリは表示されません。)
Android Studioバージョン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シェルコマンドでサービスを開始できます...
am startservice -n com.whatever.myservice/.MyService
それが実行されていることを確認できます...
ps | grep whatever
まだ試していませんが、Android Studioで自動的にサービスを開始することもできます。これは、「構成の編集」メニューで行います。