我在我的应用程序中的以下情形。 有一个在我的应用程序没有用户界面; 取而代之的是开始于启动和将连续运行服务。
我该如何配置我的清单文件中没有一个主要活动? 我可以启动我的应用程序没有任何活动? 而关于开展我的应用程序,我的服务应该启动。 这可能吗?
我不想做一个半透明的活动来启动服务。
我在我的应用程序中的以下情形。 有一个在我的应用程序没有用户界面; 取而代之的是开始于启动和将连续运行服务。
我该如何配置我的清单文件中没有一个主要活动? 我可以启动我的应用程序没有任何活动? 而关于开展我的应用程序,我的服务应该启动。 这可能吗?
我不想做一个半透明的活动来启动服务。
你说你不想使用半透明的活动,但似乎是做到这一点的最佳方式:
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
的正常申报。
Android的Studio版本2.3
您可以通过以下几个简单的步骤,没有一个主要活动创建服务。 您可以通过Android Studio中安装这个程序,并调试它像一个正常的应用程序。
首先,创建Android Studio中的一个项目没有一项活动。 然后创建服务类和服务添加到您的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工作室抱怨没有一个主要活动。
一旦安装,服务不会运行,但您将能够与此ADB shell命令启动它...
am startservice -n com.whatever.myservice/.MyService
可以检查它与运行...
ps | grep whatever
我还没有尝试过,但你可以很可能有过Android Studio自动启动该服务了。 这将在“编辑配置”菜单来完成。