推出Android应用程序,而主要活动和启动应用程序启动服务推出Android应用程序,而主要活动和

2019-06-17 09:51发布

我在我的应用程序中的以下情形。 有一个在我的应用程序没有用户界面; 取而代之的是开始于启动和将连续运行服务。

我该如何配置我的清单文件中没有一个主要活动? 我可以启动我的应用程序没有任何活动? 而关于开展我的应用程序,我的服务应该启动。 这可能吗?

我不想做一个半透明的活动来启动服务。

Answer 1:

你说你不想使用半透明的活动,但似乎是做到这一点的最佳方式:

  1. 在你的清单,设定活动主题Theme.Translucent.NoTitleBar
  2. 不要用你的活动布局麻烦,并且不调用setContentView()
  3. 在你活动的onCreate()开始与您的服务startService()
  4. 退出与活动finish()一旦你开始了服务。

换句话说,你的活动并不一定是可见的; 它可以简单地确保您的服务正在运行,然后退出,这听起来像你想要什么。

我会强烈建议出至少一个Toast通知指示,你是启动服务,或者说,它已经运行的用户。 这是非常不好的用户体验有出现,当你按下它什么都不做的起动器图标。



Answer 2:

是的,你可以通过只创建一个做BroadcastReceiver调用你的Service ,当您的应用程序启动。 下面是我给出一个完整的答案。
Android的-开机时启动服务

如果你不想让你的应用的任何图标/发射器,你可以做到这一点还,只是不创建任何活动

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

刚刚宣布你Service的正常申报。



Answer 3:

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自动启动该服务了。 这将在“编辑配置”菜单来完成。



文章来源: Launch Android application without main Activity and start Service on launching application