gpt4 book ai didi

android - 如何启动仅限服务的 Android 应用

转载 作者:IT王子 更新时间:2023-10-28 23:48:48 28 4
gpt4 key购买 nike

我正在创建一个应用程序,其唯一组件是一个 service,它在后台继续运行(基本上是一个代理服务器),但我无法找到启动该服务的方法。应用程序不能有任何 UI 或用户交互,所以我没有使用 Activity。
Broadcast receiver可以收听BOOT广播,但是如何在安装后第一次启动服务,如何保持运行?或者是否有一个我可以在安装应用程序后收听的广播,例如可能是 TIME_TICK 但我认为必须从 Activity 中注册。

最佳答案

不幸的是,在您的应用程序安装后,现在没有可靠的方法来接收广播事件,ACTION_PACKAGE_ADDED Intent 不会广播到新安装的包。

为了接收ACTION_BOOT_COMPLETED,你必须有一个广播接收器类和你的服务。事件。我还建议添加 ACTION_USER_PRESENT Intent 被该广播接收器捕获,这需要 Android 1.5 (minSDK=3),这将在用户解锁手机时调用您的广播接收器。为了保持服务运行而不会轻易地自动关闭,您可以做的最后一件事是调用 Service.setForeground()。在你的服务 onCreate 告诉 Android 你的服务不应该被停止,这主要是为 mp3 播放器类型的服务添加的,这些服务必须保持运行但可以被任何服务使用。

确保为 list 中的 boot_complete 和 user_present 事件添加适当的权限。

这是一个简单的类,您可以将其用作事件的广播接收器。

package com.snctln.util.WeatherStatus;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class WeatherStatusServiceReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
if(intent.getAction() != null)
{
if(intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED) ||
intent.getAction().equals(Intent.ACTION_USER_PRESENT))
{
context.startService(new Intent(context, WeatherStatusService.class));
}
}
}
};

祝你好运。

关于android - 如何启动仅限服务的 Android 应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/990217/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com