avatar
文章
864
标签
158
分类
0

主页
文章归档
文章标签
文章归类
文章列表
  • Music
  • Movie
友情链接
关于我
麦溪·在路上
主页
文章归档
文章标签
文章归类
文章列表
  • Music
  • Movie
友情链接
关于我

麦溪·在路上

Android之BroadcastReceiver权限设置
发表于2022-01-05
[TOC] 概述比如在当前 Activity 下动态注册一个广播,我们会这样做: 1this.registerReceiver(receiver, filter) 这样的话,这个 receiver 组件是完全公开的,不仅仅我们的应用可以向它发送数据,外部应用也可以指定相应的 action 来向它发送恶意数据。 为了提高安全性,则需要对其进行权限限制,有两种措施: 方案一1registerReceiver(BroadcastReceiver receiver, IntentFilter filter, String broadcastPermission, Handler scheduler) 该方法还是允许接收外部的广播,但添加了权限来进行限制。 在动态注册中的代码 123456BroadcastReceiver receiver = new MyBroadcastReceiver();Handler handler = new MyHandler();IntentFilter filter = new IntentFilter();filter.addAction("m ...
Android Service详解之StartService启动
发表于2022-01-05
[TOC] 文章参考:https://blog.csdn.net/SuperBigLw/article/details/53115705 一丶概述启动服务由另一个组件通过调用 startService() 启动,这会导致调用服务的 onStartCommand() 方法。 服务启动之后,其生命周期即独立于启动它的组件,并且可以在后台无限期地运行,即使启动服务的组件已被销毁也不受影响。 因此,服务应通过调用 stopSelf() 结束工作来自行停止运行,或者由另一个组件通过调用 stopService() 来停止它。 应用组件(如 Activity)可以通过调用 startService() 方法并传递 Intent 对象(指定服务并包含待使用服务的所有数据)来启动服务。服务通过 onStartCommand() 方法接收此 Intent。 例如,假设某 Activity 需要将一些数据保存到在线数据库中。该 Activity 可以启动一个协同服务,并通过向 startService() 传递一个 Intent,为该服务提供要保存的数据。服务通过 onStartCommand() 接收 ...
Android Service详解之Service概述
发表于2022-01-05
[TOC] 文章转自:https://blog.csdn.net/SuperBigLw/article/details/53115705 概述Service 是一个可以在后台执行长时间运行操作而不提供用户界面的应用组件。服务可由其他应用组件启动,而且即使用户切换到其他应用,服务仍将在后台继续运行。 此外,组件可以绑定到服务,以与之进行交互,甚至是执行进程间通信 (IPC)。 例如,服务可以处理网络事务、播放音乐,执行文件 I/O 或与内容提供程序交互,而所有这一切均可在后台进行。 Service的用途Service可以在很多场合的应用中使用,比如播放多媒体的时候用户启动了其他Activity,这个时候程序要在后台继续播放;比如检测SD卡上文件的变化;再或者在后台记录用户的地理信息位置的改变;或者启动一个服务来运行并一直监听某种动作等等。 Service概念的总结1、Service在后台运行,不可以与用户直接交互; 2、一个服务不是一个单独的进程。服务对象本身并不意味着它是在自己的进程中运行,除非另有规定,否则它与运行程序是同在一个进程中 3、一个服务不是一个单独的线程。Ser ...
Android Service使用场景之保活机制的实现
发表于2022-01-05
[TOC] Service系统机制机制拉活 这种系统拉活机制没有保证 账号同步拉活谷歌官方允许的拉活的方式 通过JobScheduler进行拉活App这种方式不建议使用,因为比较耗内存 双进程守护 这种方式,会在低电量模式下会被双杀。
Android Service详解之IntentService学习
发表于2022-01-05
[TOC] 文章参考:https://blog.csdn.net/SuperBigLw/article/details/53126101 一:概述很多时候,我们开启一个Service是想执行一个耗时任务。初学者可能直接就在Service里面执行耗时任务。这是非常不可取的。不管是何种Service,它默认都是在应用程序的主线程(亦即UI线程)中运行的。所以,如果你的Service将要运行非常耗时或者可能被阻塞的操作时,你的应用程序将会被挂起,甚至会出现ANR错误。为了避免这一问题,你应该在Service中重新启动一个新的线程来进行这些操作。现有两种方法大家参考: 1、 直接在Service的onStartCommand()方法中新建一个线程来执行; 2、Android SDK 中为我们提供了一个现成的Service类来实现这个功能,它就是IntentService,它主要负责以下几个方面: 1234567891011121314151617181920Creates a default worker thread that executes all intents delivered t ...
绑定服务BindService详解
发表于2022-01-05
[TOC] 文章参考:https://blog.csdn.net/SuperBigLw/article/details/53126676 文章参考:https://www.heqiangfly.com/2015/12/20/android-knowledge-about-service/ 一、概述绑定服务是客户端-服务器接口中的服务器。绑定服务可让组件(例如 Activity)绑定到服务、发送请求、接收响应,甚至执行进程间通信 (IPC)。 绑定服务通常只在为其他应用组件服务时处于活动状态,不会无限期在后台运行。 二、实现原理应用程序组件(客户端)通过调用bindService()方法能够绑定服务,然后Android系统会调用服务的onBind()回调方法,这个方法会返回一个跟服务端交互的IBinder对象。这个绑定是异步的,bindService()方法立即返回,并且不给客户端返回IBinder对象。要接收IBinder对象,客户端必须穿件一个ServiceConnection类的实例,并且把这个实例传递给bindService()方法。ServiceCOnnection对象包含了一 ...
Android Service详解之BoundService中AIDL的使用
发表于2022-01-05
[TOC] 文章参考:https://blog.csdn.net/SuperBigLw/article/details/53156177 AIDL介绍AIDL(Android Interface Definition Language)安卓接口定义语言 使用场景如果将Service变成远程Service的话,使用扩展的Binder进行通信会报错:这是由于在Bind Service按钮的点击事件里面我们会让MainActivity和MyService建立关联,但是目前MyService已经是一个远程Service了,Activity和Service运行在两个不同的进程当中,这时就不能再使用传统的建立关联的方式,程序也就崩溃了。 那么如何才能让Activity与一个远程Service建立关联呢?这就要使用AIDL来进行跨进程通信了(IPC)。 使用步骤1.创建一个服务重写这四个方法 1234567891011121314151617181920@Overridepublic void onCreate() { super.onCreate();} @Overrid ...
Android解决5.0以上不支持隐式启动服务的问题
发表于2022-01-05
[TOC] Android5.0以上不支持隐式启动服务,有常用的两种解决办法。 将隐式启动转换为显式启动,兼容编译sdk5.0以后版本12context.bindService(getExplicitIntent(mContext,new Intent(GPSBOARDCONTROL)), serviceConnection, Context.BIND_AUTO_CREATE); 12345678910111213141516//将隐式启动转换为显式启动,兼容编译sdk5.0以后版本 public Intent getExplicitIntent(Context context,Intent implicitIntent){ PackageManager pm = context.getPackageManager(); List<ResolveInfo> resolveInfos = pm.queryIntentServices(implicitIntent, 0); if (resolveInfo ...
Context.startForegroundService异常
发表于2022-01-05
[TOC] 文章参考:https://blog.csdn.net/sinat_20059415/article/details/80584487 文章参考:https://blog.csdn.net/lylddinghffw/article/details/78219327 https://blog.csdn.net/lylddinghffw/article/details/80366791 文章参考:https://www.cnblogs.com/wangqiang9/p/10595417.html 源码分析:https://blog.csdn.net/lylddinghffw/article/details/80366791 前言:最近在处理Android O的应用crash和anr问题,其中遇到比较多的就是“Context.startForegroundService() did not then call Service.startForeground()”,将自己的处理心得总结回顾一下。 线上出现一个问题: 1234567891011121314151617181920212 ...
Android Service详解之Messenger双向通信的实现
发表于2022-01-05
[TOC] 文章参考:https://blog.csdn.net/SuperBigLw/article/details/53158164 一、概述Messenger实现IPC通信,底层也是使用了AIDL方式。和AIDL方式不同的是, Messenger方式是利用Handler形式处理,因此,它是线程安全的,这也表示它不支持并发处理;而AIDL方式是非线程安全的,支持并发处理,因此,我们使用,AIDL方式时需要保证代码的线程安全。大部分情况下, 我们应用中不需要并发处理。 因此, 我们通常只需要使用Messenger方式。思想:在进程A中创建一个Message,将这个Message对象通过Messenger.send(message)方法传递到进程B(当然, Message对象本身是无法被传递到进程B的, send(message)方法会使用一个Parcel对象对Message对象编集,再将Parcel对象传递到进程B中,然后解编集,得到一个和进程,A中Message对象内容一样的对象) ,再把Message对象加入到进程B的消息队列里, Handler会去处理它。 二、具体步骤,双向通 ...
1…141516…87
avatar
Frewen.Wang
在青麦地上跑着,雪和太阳的光芒
文章
864
标签
158
分类
0
关注我
公告
This is my Blog
最新文章
无题2023-12-22
无题2023-07-28
无题2023-07-27
基于Windows11安装Ubuntu双系统2023-07-20
无题2023-07-17
标签
系统源码 滤波算法 工具使用 云存储 卷积神经 Linux Android框架 STL函数 Activity pytorch NEON 编译脚本 go 渲染机制 OpenGL 编程工具 虚函数 RectNative JVM Linux命令 Kotlin基础 OpenMP AI const IDEA QNN C++ SELinux 目标检测 软件安装 threading 量化方法 四大组件 编译构建 SystemServer 开源项目 unique_ptr Java基础 系统安装 BroadcastReceiver
归档
  • 十二月 20231
  • 七月 20234
  • 六月 20231
  • 四月 20231
  • 三月 20232
  • 二月 202311
  • 一月 20232
  • 十二月 20221
网站资讯
文章数目 :
864
本站总字数 :
778.1k
本站访客数 :
本站总访问量 :
最后更新时间 :
©2020 - 2023 By Frewen.Wang
框架 Hexo|主题 Butterfly