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



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

是的,这是可能的。只是不要在你的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_REPLACE操作在用户设备重新启动时触发(显然),也在应用程序升级(或初始安装)完成时触发(例如通过Play Store)。然后您可以再次启动您的服务(或为您的服务安排一个警报,以触发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...
    }
}

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

相关内容

  • 没有找到相关文章

最新更新