Meh*_*her 81 android android-service android-activity
我的应用程序中有以下场景.我的应用程序中没有UI; 相反,有一个服务在启动时启动并将继续运行.
如何在没有主Activity的情况下配置清单文件?我是否可以在没有任何活动的情 在启动我的应用程序时,我的服务应该启动.这可能吗?
我不想制作半透明的Activity来启动服务.
Dar*_*tle 117
你说你不想使用半透明的Activity,但这似乎是最好的方法:
Theme.Translucent.NoTitleBar.setContentView().onCreate(),启动您的服务startService().finish()启动服务后退出活动.换句话说,您的活动不一定是可见的; 它可以简单地确保您的服务正在运行然后退出,这听起来像你想要的.
我强烈建议至少显示一个Toast通知,指示您正在启动该服务,或者它已在运行.使用启动器图标时,用户体验非常糟糕,按下它时似乎无效.
Lal*_*ani 31
是的,你可以通过创建一个在你的应用程序启动时BroadcastReceiver调用你的方法来实现Service.这是我给出的完整答案.
Android - 启动时启动服务
如果您不想为您的任何图标/启动器应用程序,您也可以这样做,只是不要创建任何活动
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
只需声明你的Service声明正常.
小智 5
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>
Run Code Online (Sandbox Code Playgroud)
现在,在“运行”按钮(绿色箭头)旁边的下拉菜单中,转到“编辑配置”,然后在“启动选项”中选择“无”。这样一来,您就可以安装服务,而不会让Android Studio抱怨没有主活动。
安装后,该服务将无法运行,但是您可以使用此adb shell命令启动该服务...
am startservice -n com.whatever.myservice/.MyService
Run Code Online (Sandbox Code Playgroud)
可以检查它是否正在运行...
ps | grep whatever
Run Code Online (Sandbox Code Playgroud)
我还没有尝试过,但是您可能也可以让Android Studio自动启动该服务。这可以在“编辑配置”菜单中完成。
制作没有活动或服务的应用的原因可能是制作了无需启动的Widget应用。
启动项目后,请勿创建任何活动。创建项目后,只需运行即可。Android studio会说No default activity found。
单击编辑配置,然后在启动选项部分中将启动值设置为Nothing。然后单击确定并运行该应用程序。“应用程序”菜单中不会显示任何应用程序。
| 归档时间: |
|
| 查看次数: |
97400 次 |
| 最近记录: |