全部系列

四大组件与 Intent

Android 开发 · 共 35 篇 · 按发布时间正序排列

Activity、Service、广播、ContentProvider 与 Intent 的机制详解

四大组件之服务:Service
Android

四大组件之服务:Service

四大组件之服务:Service1、ServiceAndroid Service是Android四大组件之一,它主要用来执行一些不与用户交互的long-run的操作. 注意Service如非特意指定,它仅是运行于该进程的一部分代码而已,另外Service并不是运行在单独线程中,而是主线程中。所以尽量要避免一些ANR的操作。 服务是一种应用程序组件,代表应用程序执行长时间运行的操作而不与用户交互或提供

2.1k 2
【AIDL】基础知识
Android

【AIDL】基础知识

AIDL 基础知识粗略的了解一下AIDL。更深的技术探究以后随着时间不断沉淀。1、AIDL简介AIDL 意思即 Android Interface Definition Language,翻译过来就是Android接口定义语言,是用于定义服务器和客户端通信接口的一种描述语言,可以拿来生成用于IPC的代码。从某种意义上说AIDL其实是一个模板,因为在使用过程中,实际起作用的并不是AIDL文件,而是据

2.0k
Android

Activity四种启动模式

Activity四种启动模式启动模式android:launchMode在AndroidManifest.xml中配置,共有四种启动模式。Android开发者博主扔物线关于Activity的启动模式说的非常细! 1、standard:标准模式此模式为默认模式,android:launchMode="standard”可不写,默认为此模式。在标准模式下,每启动一个activity,系统则会创建一个相

2.1k
私有

Activity退出开启的子线程仍然在运行会出现问题

Activity退出开启的子线程仍然在运行会出现问题一般在Activity中开启子线程进行耗时任务的处理,比如:网络数据请求、数据解析、图片处理等。不过可能等不到数据加载完,就有可能直接返回导致Activity销毁,但是里面已经开启的线程仍然在执行,且会有意想不到的结果。发生一些异常:上面就是子线程请求网络数据得到结果后,进行设置,但是此时如果Activity在结果返回前就已经退出,则会出现问题。

32
Android通知Notification
Android

Android通知Notification

Android通知Notification首先获取系统服务NotificationManager:1.1、通知渠道其次,对于Andrid 8.0 O以上的版本需要添加通知渠道(NotificationChannel)才能正常显示通知,创建一个NotificationChannel对象,并将其添加到NotificationManager中。后面创建Notification通知的时候需要指定通知渠道I

1.1k
PendingIntent延迟意图
Android

PendingIntent延迟意图

PendingIntent延迟意图PendingIntent一般用在Notification和桌面小挂件AppWidgetProvider的点击事件发生时传递的Intent意图。这里主要了解一下PendingIntent,至于具体使用场景参考另外两篇详细介绍。1、什么是PendingIntentPendingIntent谷歌官方文档的解释是“A description of an Intent a

2.0k
IntentService使用详解
Android

IntentService使用详解

IntentService使用详解之前已经学习过Android的四大组件之一Service,但是Service和前台运行在一个进程里,不能再Service中执行耗时操作,否则需要开启线程,执行完毕之后再借助Handler传回到主线程处理,Android提供了很多线程间通信的消息机制。Google又进一步进行了封装,提供了IntentService,内部对Service和Handler进行了封装,做

2.0k 1
Android DeepLink跳转
Android

Android DeepLink跳转

Android DeepLink跳转网页通过超链接跳转到APP指定页面,或者通过DeepLink打开特定的应用页面,都是通过Android DeepLink技术实现的。搜索跳转例子1、<data />要想让自己的应用能够通过DeepLink跳转,需要先了解AndroidManifest中的<data />标签。关于<data />及更多AndroidManifest标签详见Android Deve

3.1k
Activity切换动画
Android

Activity切换动画

Activity切换动画Activity之间切换的时候有动画效果,不同手机系统效果不一样,因为系统框架做了改进。而APP开发者也可以自定义Activity切换动画,让自己的应用变得高大上。1、overridePendingTransition(有效)Activity类中提供了Activity跳转动画方法,通过该方法可以实现Activity跳转时的动画效果。在Activity中定义的部分源码如下 ①

2.6k
Android

Activity启动的Flag

Activity启动的FlagActivity有4中启动模式,参考Activity四种启动模式 。启动Activity的Intent添加flag,使用 Intent.addFlags(int flags) 方法。查看源码,可以看到总共有20种:后面简单介绍Intent几个常用的Flag。 1、FLAG_ACTIVITY_CLEAR_TOP这个Flag有没有很熟悉。SingleTask启动模式自带该

1.9k
IntentFilter匹配
Android

IntentFilter匹配

IntentFilter匹配通过Intent隐式启动Activity通过IntentFilter匹配合适的Activity进行启动。参考《启动Activity的几种方式》。其中主要通过action、category、data进行匹配,在Intent源码中可以查看到三个私有成员变量的定义:1、actionIntent必须且只能设置一个action。从源码可以看到,action定义为String类型的

2.0k
Messenger:轻量级的IPC
Android

Messenger:轻量级的IPC

Messenger1、MessengerMessenger在不同进程中传递Message对象,在Message中放入我们需要传递的信息,然后通过Messenger将Message传递给对方,就可以轻轻松松实现跨进程数据传递。Messenger是轻量级的IPC(跨进程通信)方式,底层是AIDL实现。 “Reference to a Handler, which others can use to s

2.0k
​Android AIDL 进阶:Service 权限配置与 RemoteCallbackList
Android

​Android AIDL 进阶:Service 权限配置与 RemoteCallbackList

Android AIDL 进阶:Service 权限配置与 RemoteCallbackListAIDL 让跨进程通信变得简单——定义接口、实现 Stub、bindService 一气呵成。但只要你的 Service 对外暴露,任何应用都能 bind 它、调用它的方法,安全隐患随之而来。本文讲清两个 AIDL 进阶主题:如何给 Service 加权限验证(声明式 + 编程式两种),以及如何用 Re

401
Activity启动流程源码分析(旧版)
Android

Activity启动流程源码分析(旧版)

Activity启动流程源码分析(旧版)2020年4月19号,周末两天把Activity启动的源码流程捋一遍。Android源码确实太“跳”了,如果对Android整体源码的框架没有整体的概念,可能很容易读着读着“跟丢”代码。重新装上Visio,一遍看源码,一遍捋逻辑图。对代码阅读能力确实有很大提升,想到去年刚进项目的时候,先统计了一下模块的代码,大概十万行,这得看到什么时候啊!其实不需要全部都看

2.2k
Service启动流程分析
Android

Service启动流程分析

Service启动流程分析Service作为Android的四大组件之一非常重要,比起一些后台执行的子线程、异步任务,Service更强大可靠。Service的启动方式有两种一种是直接start启动一个Service,另一种是bind方式绑定一个Service启动。IntentService就是Service,启动方式与普通Service无差。Service及IntentService参考《Ser

1.9k
BroadcastReceiver工作流程
Android

BroadcastReceiver工作流程

BroadcastReceiver工作流程广播是安卓开发四大组件之一,比较常用。使用起来也很方便,具体使用参考《BroadcastReceiver:广播》。这里顺着源码看看BroadcastReceiver的实现逻辑。1、注册/反注册代码中注册广播只需一行代码即可注册广播:Context中的抽象方法ContextWrapper是Context的实现类,内有mBase成员变量ContextImpl都

2.0k
ContentProvider启动流程及原理
Android

ContentProvider启动流程及原理

ContentProvider启动流程及原理ContentProvider作为Android的四大组件之一是非常重要的,它的用法参考ContentProvider的用法。本篇主要顺着源码理解ContentProvider的启动和底层原理。1、ContentProvider启动当一个APP启动的时候从ActivityThread的main方法入口加载的过程中就会初始化本应用的ContentProvi

2.2k
IntentService原理
Android

IntentService原理

IntentService原理之前记录了一篇IntentService 的使用(参考IntentService使用详解),没有详细对IntentService的实现原理进行深入颇析。正好阅读Android源码,对一些实现原理进行深入的了解。先介绍一下IntentService中两个重要的成员变量:mServiceLooper和mServiceHandler。在IntentService初始化的时候

1.9k
Android

BroadcastReceiver:广播的使用

BroadcastReceiver:广播的使用广播是Android四大组件之一。用广播可以实现简单进程间通信;一定程度上还能解耦;关于BroadcastReceiver的原理参考BroadcastReceiver工作流程。广播除了用来通知,桌面小部件AppWidgetProvider也是继承自BroadcastReceiver实现更新桌面挂件的,参考AppWidgetProvider:桌面小挂件。

2.1k
创建桌面快捷方式
Android

创建桌面快捷方式

创建桌面快捷方式创建桌面快捷方式,方便用户直达页面。比如微信的联系人快捷方式,点击直接进入聊天界面,省去很多步骤。Android API升级过程中也对创建桌面快捷方式的方式进行了改进。有两种创建桌面快捷方式的途径,详见第二和第三节,开发中要做好兼容,这就是安卓最麻烦的地方。1、所需权限创建桌面快捷方式也需要声明权限,不然不能正确在桌面创建快捷方式。2、Android N之前创建快捷方式(废弃)An

3.1k
Android

AMS服务的启动

AMS服务的启动Android开发是不是经常听说过AMS,什么是AMS?其实指的就是ActivityManagerService和一些关联的类,对系统运行时的Activity进行管理。以Android Q的源码开始阅读,了解AMS的启动过程,会发现不再由ActivityManagerService,而是由重构之后ActivityTaskManagerService类来启动管理Activity。1、

2.6k
AlarmManager定时任务
Android

AlarmManager定时任务

AlarmManager定时任务定时任务在应用中最常见不过了,Android提供了很多定时的途径,短时间的延迟任务优先使用Handler的postDelay()方法,借助Timer,AlarmManager类设置定时任务。今天来讲一讲AlarmManager设置定时任务的用法。Android官方文档:AlarmManager1、AlarmManagerAlarmManager类提供对系统警报服务的

2.1k
深入理解AlarmManagerService
Android

深入理解AlarmManagerService

深入理解AlarmManagerService通过AlarmManager方便的设置定时任务,详见《AlarmManager定时任务》。现在来看看其中更深层次的原理,主AlarmManager要通过AIDL远程调用AlarmManagerService接口方法来在系统Service中设置定时任务。以set方法为例跟随设置流程来看看一个定时任务是如何被添加到系统中的。1、setImpl(...)所有

4.6k
Android

【Jetpack】WorkManager定时任务利器

定时任务利器:WorkManager库查看JetPack内容库的时候发现了WorkManager库更新到最新稳定版本2.4.0(2020年8月9号)。WorkManager是Google推出的调度定时任务新技术,官方文档:Docs>Reference>WorkManager">Android Docs>Reference>WorkManager推荐观看Google技术推广工程师史婧羽小姐姐的Wor

2.4k
Activity生命周期监听ActivityLifecycleCallbacks
Android

Activity生命周期监听ActivityLifecycleCallbacks

Activity生命周期监听ActivityLifecycleCallbacks一个应用有很多Activity,一些重复的代码,可以通过抽象出BaseActivity类抽取出来。也可以通过hock的方式启动应用增加额外判断。Activity的生命周期如何统一管理呢?曾经接触过UMeng的埋点SDK,不需要任何配置,即可监听应用的所有页面活动并上报埋点。他们是通过什么来实现的呢?答案就是:Activ

3.7k
ContentProvider笔记
Android

ContentProvider笔记

ContentProvider笔记ContentProvider作为四大组件很常用,但是相关代码一写完少则半年都不会变动,不会天天四大组件来回折腾。好记性不如烂笔头,简要记录一下ContentProvider的用法。1、ContentProviderContentProvider用来在多个应用程序之间共享数据,涉及到Binder跨进程传输那部分咱先不提。你要在同一个APP内部也使用ContentP

2.3k
Android

“本地广播”LocalBroadcastManager源码解析

“本地广播”LocalBroadcastManager源码解析在BroadcastReceiver:广播的使用一文中总结了关于广播的基础知识,关于本地广播和普通广播的区别总结如下:①BroadcastReceiver一般用于应用间消息;LocalBroadcastManager应用内消息传递。②BroadcastReceiver是Binder进程间通信;LocalBroadcastManager内

2.0k
Activity启动流程全新版本(基于API 30)
Android

Activity启动流程全新版本(基于API 30)

Activity启动流程全新版本(基于API 30)最新的AOSP源码对Activity的启动流程进行了非常大的改动,更好的支持Lifecycle。现在基于API 30源码熟悉一下全新的Activity启动流程。一年前阅读老版本AOSP写的博客仍然保留,传送门:Activity启动流程源码分析。1、从startActivity开始构造启动的Intent,一般通过Activity或者Context的

3.0k
包可见性引起的问题:Unable to start service Intent U=0: not found
Android

包可见性引起的问题:Unable to start service Intent U=0: not found

包可见性引起的问题:Unable to start service Intent U=0: not found有同学遇到无法启动三方应用Service的“玄学”问题,让我来看看到底是哪里的问题。通常启动三方应用的Service很简单,只需简短的几行代码:但是无论如何也不能启动三方应用的Service服务,查看AMS相关的系统日志发现是找不到Service导致启动失败(也没有报异常出来):1、问题分

9.7k
Android

Android FileProvider 使用指南

Android FileProvider 使用指南FileProvider是 Android 7.0+ 系统中安全的文件分享机制,用于替代传统的 file:// URI 方式。1、配置FileProvider要在项目中引入 FileProvider,只需要在 build.gradle 文件中添加 AndroidX 核心库依赖即可(通常新建项目时已默认包含)。1.1、添加依赖在模块级(Module)

895
Android

Android ShortcutManager 使用指南

Android ShortcutManager 使用指南ShortcutManager 是 Android 7.1+ 系统中提供的快捷方式管理工具,允许应用创建和管理三种类型的快捷方式:静态快捷方式、动态快捷方式和固定快捷方式。这些快捷方式可以显著提升用户体验,让用户快速访问应用的核心功能。1、ShortcutManager 概述1.1、三种快捷方式类型静态快捷方式:在 XML 文件中定义,随 A

759
Android 分享功能实现指南
Android

Android 分享功能实现指南

Android 分享功能实现指南在 Android 应用开发中,分享功能是一个非常常见的需求。通过分享功能,用户可以将应用中的内容(如文本、图片、链接等)快速传递到其他应用中,如微信、QQ、蓝牙等。本文将详细介绍 Android 中实现分享功能的两种典型场景,并重点讲解通用的系统分享面板方法。1、分享功能概述在 Android 中实现分享功能,一般有两种典型场景:①调用系统的分享面板,把内容(文本

659
Android 接收分享内容的完整实现指南
Android

Android 接收分享内容的完整实现指南

Android 接收分享内容的完整实现指南关于如何实现分享单个或多个文件,参考之前的Android 分享功能实现指南。本篇讲的则是从接收方,要接收来自其他应用的分享内容(文本、链接、图片或文件),需要正确配置 Intent Filter 和处理传入的数据。1、基本配置下面是完整的实现流程:1.1. 修改 Manifest 文件首先需要在 AndroidManifest.xml 中添加适当的 Int

576
深入理解Android通知移除监听机制
Android

深入理解Android通知移除监听机制

深入理解Android通知移除监听机制本文将详细介绍两种主要的Android通知移除监听方式:NotificationListenerService和setDeleteIntent(),帮助开发者选择最适合自己应用的解决方案。1、概述在Android开发中,我们经常需要知道用户何时移除了通知。常见的场景包括: 清理已完成的通知记录 统计通知点击率 根据用户操作调整后续通知策略 Android提供了

531
Android

Android 添加快捷方式指南

Android 添加快捷方式指南在 Android 系统中,可以通过多种方式创建桌面快捷方式,包括静态快捷方式(Static Shortcuts)、动态快捷方式(Dynamic Shortcuts)以及 Pinned Shortcuts(固定快捷方式)。下面详细介绍每种方式的实现方法和使用场景。1、静态快捷方式(Static Shortcuts)适用于固定的功能入口,比如 App 的主要页面跳转。

633