I have the following scenario in my application. There is no UI in my application; instead there is a Service which starts on boot up and will continuously run.
How can I configure my manifest file without a main Activity? Can I launch my app without any Activity? And on launching my app, my Service should start. Is this possible?
I don't want to make a translucent Activity to start the Service.
Yes you can do that by just creating a
BroadcastReceiver
that calls yourService
when your Application boots. Here is a complete answer given by me.Android - Start service on boot
If you don't want any icon/launcher for you Application you can do that also, just don't create any Activity with
Just declare your
Service
as declared normally.You said you didn't want to use a translucent Activity, but that seems to be the best way to do this:
Theme.Translucent.NoTitleBar
.setContentView()
.onCreate()
, start your Service withstartService()
.finish()
once you've started the Service.In other words, your Activity doesn't have to be visible; it can simply make sure your Service is running and then exit, which sounds like what you want.
I would highly recommend showing at least a Toast notification indicating to the user that you are launching the Service, or that it is already running. It is very bad user experience to have a launcher icon that appears to do nothing when you press it.
Android Studio Version 2.3
You can create a Service without a Main Activity by following a few easy steps. You'll be able to install this app through Android Studio and debug it like a normal app.
First, create a project in Android Studio without an activity. Then create your Service class and add the service to your AndroidManifest.xml
Now, in the drop down next to the "Run" button(green arrow), go to "edit configurations" and within the "Launch Options" choose "Nothing". This will allow you to install your Service without Android Studio complaining about not having a Main Activity.
Once installed, the service will NOT be running but you will be able to start it with this adb shell command...
Can check it's running with...
I haven't tried yet but you can likely have Android Studio automatically start the service too. This would be done in that "Edit Configurations" menu.