【问题标题】:Is it possible to have Android app without any Activities, but only with Services?是否可以让 Android 应用程序没有任何活动,而只有服务?
【发布时间】:2014-10-02 07:43:42
【问题描述】:

如何制作一个不包含Activity作为主启动器但包含服务作为主启动器的应用程序?

【问题讨论】:

标签: android android-service android-service-binding


【解决方案1】:

是的,这是可能的。只是不要在您的 AndroidManifest 中定义任何活动,就可以了。

然而,为了能够调用您的服务,您应该做的是使用广播接收器监听一些电话操作。

类似这样的:

    <receiver android:name="com.example.MyBroadcastReceiver">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED"/>
            <action android:name="android.intent.action.MY_PACKAGE_REPLACED"/>
        </intent-filter>
    </receiver>

操作 BOOT_COMPLETED 和 MY_PACKAGE_REPLACED 会在用户设备重新启动时触发(很明显),但也会在您的应用程序升级(或初始安装)完成时触发(例如通过 Play 商店)。 然后您可以再次启动您的服务(或为您的服务安排警报触发 x 分钟/小时/天/...)。

如果您没有任何可能的用户输入,另一个有用的操作是 ACTION_USER_PRESENT。每当您的用户解锁他的手机时,就会触发这个。

注意: 对于 BOOT_COMPLETED 操作,您需要在清单中添加权限:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

那么在你的“MyBroadcastReciever”类中你不应该做任何特别的事情来检查动作。你知道你只能通过清单中指定的操作进入那里,所以你的广播接收器看起来像这样:

public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        // Do  your work here...
    }
}

所有将被触发的服务也应该在清单中定义!不要忘记这一点!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-09
    • 2014-07-24
    • 2010-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多