Android通过广播调后台Service
来源:互联网 发布:win10专业版网络掉线 编辑:程序博客网 时间:2024/06/16 01:42
Android在3.1(Api Level=12)版本之后给Intent新增两个Flag:FLAG_INCLUDE_STOPPED_PACKAGES:表示包含未启动的App。FLAG_EXCLUDE_STOPPED_PACKAGES:表示不包含未启动的这两个FlAG用来控制Intent是否要对处于停止状态的App起作用。所据说主要目的防止通过广播无意或不必要地开启未启动App的后台服务。如果要强制调起未启动的App,如果我们的项目要通过广播来启动后台运行的服务,又要兼容3.1以下版本,那我们则需要进行相应判断:
//自定义广播MyBroadcastReceiver public class MyBroadcastReceiver extends BroadcastReceiver { public static final String MY_ACTION = "COM_LDM_SRATR_SERVER"; @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (intent.getAction().equals(MY_ACTION)) { //判断要启动的Service是否正在运行 boolean isRunning = serviceRunState(context, "com.ldm.server.MyService"); if (!isRunning) {//Service没有运行,则启动服务 Intent in = new Intent(context, MyService.class); if (android.os.Build.VERSION.SDK_INT >= 12) { // 3.1以后设置Intent.FLAG_INCLUDE_STOPPED_PACKAGES in.setFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); } context.startService(in); } } } /** * 判断指定Service运行的状态 * @param context * @param className * @return */ public static boolean serviceRunState(Context context, String className) { boolean isRun = false; ActivityManager activityManager = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE); List<ActivityManager.RunningServiceInfo> serviceList = activityManager .getRunningServices(30); if (!(serviceList.size() > 0)) { return false; } for (int i = 0; i < serviceList.size(); i++) { if (serviceList.get(i).service.getClassName().equals(className)) { isRun = true; break; } } return isRun; }}
然后在指定页面中注册我们自定义的广播即可,不要忘记添加相应ACTION哦!
0 0
- Android通过广播调后台Service
- 后台Service通过广播更新UI,Activity通过广播停止Service
- Android通过后台service下载
- 【Android】Service通过广播更新UI
- 【Android】Service通过广播更新UI
- Android通过Service实现音乐后台播放
- android 功能代码 后台服务通过广播更新Activity界面
- android 两个程序之间如何通过 service 来监听广播
- Android通过广播接收者调用服务(service)内方法
- Android通过广播方式实现service与…
- Android Service和广播
- android 广播 service
- android Service发送广播
- Android 利用广播机制来进行SERVICE后台服务进程的守护
- Service通过广播Broadcast更新Activity UI
- Broadcast与service----------通过广播启动服务
- Service通过广播Broadcast更新Activity UI
- Service通过广播Broadcast更新Activity UI
- C#控制台应用程序 “输出”到控制台 Console.WriteLine
- TextView实现跑马灯的效果
- Swift中@noescape介绍
- Android新手入门2016(7)--布局
- iOS 事件传递之响应链
- Android通过广播调后台Service
- 利用python-flask搭建个人博客
- 在 swift中处理网络请求
- 频谱分析仪和功率计Wipry-pro
- 近乎二次开发培训课(3期)正式开始招生!
- 堆排序(绝对详细)
- (4.5.1)Android Studio教程从入门到精通
- asp.net webservice 调用实例
- CentOS 7 安装VPN Server 和 Client