首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有可能在没有任何活动的情况下使用Android应用程序,而只使用服务?

有没有可能在没有任何活动的情况下使用Android应用程序,而只使用服务?
EN

Stack Overflow用户
提问于 2014-10-02 15:43:42
回答 1查看 314关注 0票数 0

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

EN

回答 1

Stack Overflow用户

发布于 2014-10-02 16:00:59

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

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

如下所示:

代码语言:javascript
复制
    <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 Store )。然后,您可以重新启动您的服务(或为您的服务安排一个警报,以触发x分钟/小时/天/...)。

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

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

代码语言:javascript
复制
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

然后,在你的“MyBroadcastReciever”类中,你不应该做任何特殊的事情来检查动作。您知道您只能通过清单中指定的操作进入其中,因此您的广播接收器将如下所示:

代码语言:javascript
复制
public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        // Do  your work here...
    }
}

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26156345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档