是否有可能没有任何活动的Android应用程序,但只有服务?

时间:2014-10-02 07:43:42

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

如何将不包含Activity的应用作为主启动器,但包含服务作为主启动器?

1 个答案:

答案 0 :(得分:3)

是的,这是可能的。只是不要在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...
    }
}

所有将要触发的服务也应该在清单中定义!别忘了!