我的应用程序中有以下场景。我的应用程序中没有UI;相反,有一个服务在启动时启动并将继续运行。
如何在没有主要活动的情况下配置清单文件?我是否可以在没有任何活动的情在启动我的应用程序时,我的服务应该启动。这可能吗?
我不想制作半透明的活动来启动服务。
答案 0 :(得分:114)
你说你不想使用半透明的Activity,但这似乎是最好的方法:
Theme.Translucent.NoTitleBar
。setContentView()
。onCreate()
中,使用startService()
启动您的服务。finish()
退出活动。换句话说,您的活动不一定是可见的;它可以简单地确保您的服务正在运行然后退出,这听起来像你想要的。
我强烈建议至少显示一个Toast notification,向用户表明您正在启动该服务,或者它已在运行。使用启动器图标时,用户体验非常糟糕,按下它时似乎什么都不做。
答案 1 :(得分:29)
是的,您可以通过创建在应用程序启动时调用BroadcastReceiver
的{{1}}来实现此目的。以下是我给出的完整答案
Android - Start service on boot
如果你不想为你申请任何图标/启动器,你也可以这样做,只是不要创建任何活动
Service
只需宣布您的<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
正常宣布。
答案 2 :(得分:4)
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>
现在,在&#34; Run&#34;旁边的下拉菜单中按钮(绿色箭头),转到&#34;编辑配置&#34;并在&#34;发布选项&#34;选择&#34;没什么&#34;。这将允许您在没有Android Studio抱怨没有主要活动的情况下安装您的服务。
安装后,该服务将无法运行,但您可以使用此adb shell命令启动它...
am startservice -n com.whatever.myservice/.MyService
可以检查它是否正在运行......
ps | grep whatever
我还没有尝试过,但您也可以让Android Studio自动启动该服务。这将在&#34;编辑配置&#34;菜单。
答案 3 :(得分:3)
制作不具有任何活动或服务的应用的原因可能是制作不需要启动的Widget应用。
启动项目后,请勿创建任何活动。创建项目后,只需运行即可。 Android Studio会说No default activity found
。
单击编辑配置,然后在启动选项部分中将启动值设置为无。
然后单击确定并运行该应用程序。 “应用”菜单中不会显示任何应用。