开机启动服务,而不是整个 Android 应用程序

6
我正在处理Android相关的工作。
我正在开发一款应用程序,该应用使用Activity来设置特定用户输入值,然后由服务提供基于这些值的警报。通过研究,我确定了如何让应用在手机启动时启动,但是,我真正想要的是让服务启动,而不是将应用加载到屏幕上。目前,整个应用在我打开设备时都会加载到屏幕上,然后我必须退出它。
我已经下载了类似程序,它们具有设置接口,但在后台运行。那是如何实现的?

什么操作系统? - mr_plum
抱歉,我正在使用Android进行开发。具体来说是API 10。 - user2196720
3
请发一些代码。我猜你实现了一个BroadcastReceiver,但是在 onReceive 方法中具体做了什么呢?是调用了 context.startService() 吗? - Paul-Jan
你应该简单地不向你的应用程序对象添加任何内容,并保持你的服务精简...(不要从这些开始任何BL)。我并不确定你能维持多少个应用程序的功能,但这样做可以得到你想要的结果。也许一个通知可以启动一个带有你的BL内容的活动... - TacB0sS
1个回答

22

首先,您需要创建一个接收器:

public class BootCompletedReceiver extends BroadcastReceiver {

    final static String TAG = "BootCompletedReceiver";

    @Override
    public void onReceive(Context context, Intent arg1) {
        Log.w(TAG, "starting service...");
        context.startService(new Intent(context, YourService.class));
    }
}

然后在您的AndroidManifest.xml文件中添加权限:

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

并注册意图接收器:

<receiver android:name=".BootCompletedReceiver" >
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</receiver>

完成这些步骤后,你的应用程序(Application类)将与服务一起运行,但没有活动(Activities)。
哦,别把你的应用程序放在SD卡上(APP2SD或类似的东西),因为它必须驻留在主内存中,在启动完成后立即可用。

感谢您的回复。您为我确认了我实际上正在做正确的事情。它没有起作用的原因是该服务需要来自Activity的数据,而这些数据直到Activity启动后才可用。但是,我已经想出了一个解决方法。非常感谢! - user2196720

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接