我正在创建一个应用程序,其唯一的组件是service
继续在后台运行(基本上是代理服务器),但我无法找到如何启动该服务的方法.应用程序无法进行任何UI或用户交互,因此我不使用Activity.
Broadcast receiver
可以收听BOOT广播,但如何在安装时首次启动服务,如何让它保持运行?或者是否有安装应用程序后我可以收听的广播,例如可能是TIME_TICK,但必须从我认为的活动中注册.
snc*_*tln 43
不幸的是,现在没有可靠的方法来在安装应用程序后接收广播事件,ACTION_PACKAGE_ADDED Intent不会广播到新安装的软件包.
您必须拥有广播接收器类以及您的服务才能接收ACTION_BOOT_COMPLETED事件.我还建议添加ACTION_USER_PRESENT意图被该广播接收器捕获,这需要Android 1.5(minSDK = 3),这将在用户解锁手机时呼叫您的广播接收器.你可以做的最后一件事就是在你的服务onCreate中调用Service.setForeground()来尝试让你的服务保持运行而不是自动关闭,告诉Android你的服务不应该被停止,这主要是对于必须继续运行但可由任何服务使用的mp3播放器类型服务.
确保为清单中的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));
}
}
}
};
Run Code Online (Sandbox Code Playgroud)
祝好运.
sha*_*604 14
返回START_STICKY
在Service.onStartCommand
Android将重启您的服务
归档时间: |
|
查看次数: |
64433 次 |
最近记录: |