我正在创建一个应用程序,其唯一组件是一个 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/