启动没有主要Activity的Android应用程序,启动启动应用程序的Service
我在我的应用程序中有一个场景。我的应用程序中没有UI,而是有一个服务在启动时启动,并将持续运行。
我怎样才能configuration我的清单文件没有主要的活动? 我可以启动我的应用程序没有任何活动? 而启动我的应用程序,我的服务应该开始。 这有可能以任何方式? 我不想做半透明的活动来启动服务。
提前致谢!!!
你说你不想使用半透明的活动,但这似乎是做到这一点的最佳方式:
- 在您的清单中,将活动主题设置为
Theme.Translucent.NoTitleBar
。 - 不要打扰你的活动的布局,不要打电话
setContentView()
。 - 在你的Activity的
onCreate()
,用startService()
启动你的服务。 - 启动服务后,使用
finish()
退出活动。
换句话说,你的活动不一定是可见的; 它可以简单地确保您的服务正在运行,然后退出,这听起来像你想要的。
我强烈build议至less显示一个Toast通知,告知用户您正在启动服务,或者它已经在运行。 有一个启动器图标,当你按下它什么都不做,这是非常糟糕的用户体验。
是的,只需创build一个在您的应用程序启动时调用您的Service
的BroadcastReceiver
。 这是我给出的完整答案。
Android – 开机启动服务
如果你不想为你的应用程序的任何图标/启动器,你也可以这样做,只是不要创build任何活动
<intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter>
只要声明你的Service
正常申报。
Android Studio版本2.3
您可以按照几个简单的步骤创build一个没有主要活动的服务。 你将能够通过Android Studio安装这个应用程序,并像普通的应用程序一样进行debugging。
首先,在Android Studio中创build一个没有任何活动的项目。 然后创build您的服务类,并将该服务添加到您的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>
现在,在“运行”button(绿色箭头)旁边的下拉列表中,进入“编辑configuration”,在“启动选项”中select“无”。 这将允许您在没有Android Studio的情况下安装您的服务,抱怨没有主要活动。
一旦安装,服务将不会运行,但您将能够使用此adb shell命令启动它…
am startservice -n com.whatever.myservice/.MyService
可以检查它正在运行…
ps | grep whatever
我还没有尝试,但你可能会有Android Studio自动启动服务。 这将在“编辑configuration”菜单中完成。