分类

Android

深入探讨 Android 系统的核心架构与高级开发,聚焦四大组件(Activity、Service、Broadcast Receiver、Content Provider)的原理、生命周期管理和交互机制。从基础的组件构建与通信,到 Android Framework 层(如 AMS、WMS、PMS)的源码剖析和自定义扩展,提供详尽代码示例、调试技巧和性能优化策略。涵盖 JNI、AIDL、Binde

共 356 篇文章

AsyncTask:异步任务
Android

AsyncTask:异步任务

AsyncTask:异步任务多线程开发在Android中很常见,网络请求,图片加载,JSON解析等等。而且Android也提供了非常丰富的多线程方法,Thread、Runnable、Handler等等。AsyncTask更进一步做了封装,直接开启一个任务,内部在子线程中处理耗时任务。还能在UI线程中更新界面。关于AsyncTask的原理参考《源码颇析AsyncTask工作原理》。1、AsyncTa

1.7k
Android

Google Breakpad 崩溃收集系统详解

Google Breakpad 崩溃收集系统详解Google Breakpad 是一套开源的跨平台崩溃报告系统,由客户端库、符号卸载器和 Minidump 处理器三大组件构成。它能在应用程序崩溃时生成紧凑的 dump 文件,并通过符号解析还原出可读的 C/C++ 堆栈跟踪,是 Native 层 Crash 收集的行业标准方案。1、工具概述在 Android 开发中,JNI 层的 Crash 问题一

187
PreferenceScreen 设置项
Android

PreferenceScreen 设置项

PreferenceScreen 设置项应用一般都有设置界面,这些通常通过SharedPreference保存在手机上(SharedPreference参考Android存储相关:SharedPreference),界面也要单独写。好在Android为我们提供了一个强大的设置界面PreferenceScreen。通过这个构建设置页面,点击界面切换设置的同时,后台也自动保存了相关数据。1、Prefe

4.0k
Android输入法及InputMethodManager
Android

Android输入法及InputMethodManager

输入法Android中输入法弹框是比较常见,但也时不时遇到各种问题。页面已经退出了输入法的输入框莫名其妙的还在,经常在各种APP中遇到这种情况。有时打开一个页面,需要输入内容,这时候如果自动弹出输入框,用户体验也比较好,但是有时候会出现输入框不能自动弹出或者弹出又立马收起的情况。 等等各种玄学问题。1、EditText获得焦点自动弹出输入法只需要设置两处即可让EditText自动弹出输入法,①设置

2.0k
Android

Android传感器Sensor了解一下

SensorAndroid设备支持种类众多的传感器,诸如光线传感器、加速度传感器、磁场传感器、压力传感器等等。应用场景很丰富,比如用在手机自动调整亮度、游戏里的方向控制等等。1、SensorManager传感器管理类,管理手机上的各种传感器。这个类提供的各种方法可以访问传感器列表、注册或解除注册传感器事件监听、获取方位信息等。通过getSystemService()获取SensorManager实

2.8k
Android

WiFi相关操作

WiFi相关操作前段时间学习了Android中WiFi相关操作,一直没来得及写。乘着过年只能在家待写一写。关于WiFi扫描、WiFi基本信息、WiFi连接等操作。1、所需权限必须在AndroidManifest中申请以下3种权限,缺一不可。缺一个都无法扫描或者得到扫描结果。详细权限需求说明查看官方API。最好再动态监测一下有没有相应的权限,如果没有就动态申请。这里不再累述。2、WifiManage

2.7k 1
AudioManager:音量调节
Android

AudioManager:音量调节

AudioManager顾名思义,音频管理器,是Android中定义的类,方便我们设置手机中的各种音频。如多媒体音量获取和调节、设置铃声等。获取AudioManager实例,调用Context中的方法:AUDIO_SERVICE获取AudioManager对象,该静态变量在Context中的定义如下。Context中还定义很多其它类型参数,这里不再详述。AudioManager类中定义了丰富的AP

1.8k
GridView网格布局
Android

GridView网格布局

网格视图:GridView拥有很多属性,都可以在布局中设置,也可以在代码中设置:代码:setStretchMode(int stretchMode)设置列表项如何拓展填充闲置空间的方式。可以设置下面常量值中的一个:常量值描述none0扩展无效spacingWidth1列与列之间的空间被扩展columnWidth2每一列被相等的拓展spacingWidthUniform3列与列之间的空间被均匀的扩展

1.6k
拖动进度条SeekBar
Android

拖动进度条SeekBar

拖动进度条SeekBar以前用到的ProgressBar都是显示给用户看的,用户不能操作。像视频进度条、音量控制条都是可以给用户操作,根据用户设定的值再操作。Android提供了这样的控件SeekBar。1、布局添加SeekBar的用法很简单,先看布局文件:2、代码设置给SeekBar对象添加一个SeekBar.OnSeekBarChangeListener监听器:效果:还可以通过设置drawab

924
禁止在Activity页面内截图、录屏
Android

禁止在Activity页面内截图、录屏

安全性要求比较高的APP,一般会禁止在某些页面Activity进行截图,诸如农业银行的APP。加上下面的flag即可:在Activity的onCreate()方法给Window加上flag:WindowManager.LayoutParams.FLAG_SECURE尝试截图的时候会提示“由于应用限制,该界面无法截图”,录屏的时候也会提示失败参考博客: 《Android之禁止APP截图、录屏》 An

4.0k
Android

Android 获取当前app的版本号和版本名称

apk打包之前根据自己的需要,进行版本号、版本名称设置。android studio 设置是于build.gradle文件的中设置。在Activity中可以直接调用getPackageManager()方法来获取PackageManager对象,这是Context的子类ContextWrapper中的getPackageManager()方法。源码:PackageManager类中的getPack

1.6k
Android

Android ProGuard 代码混淆详解

Android ProGuard 代码混淆详解ProGuard 是 Android 开发中常用的代码混淆工具,它通过检测和移除未使用的类、字段、方法,优化字节码,以及用短名称混淆类名和方法名,使 APK 难以被逆向工程。本文从启用配置到混淆规则编写,全面介绍 ProGuard 的使用方法。1、ProGuard 的作用ProGuard 提供三大核心功能: • 压缩(Shrink):检测并移除未使用的

203
启动Activity的几种方式
Android

启动Activity的几种方式

启动Activity的几种方式启动Activity一般借助Intent,不仅可以启动本应用内的Activity,还可以启动第三方应用的Activity。启动还可以给Intent加上指定的flag,参考Activity启动的Flag。1、Intent显示启动一般启动本应用内的Activity可以使用这种方式,因为知道类名。显示启动也有多种方式,不过变来变去都一样。创建启动Activity用到的Int

2.5k
CoordinatorLayout及高级菜单栏AppBarLayout、CollapsingBarLayout
Android

CoordinatorLayout及高级菜单栏AppBarLayout、CollapsingBarLayout

CoordinatorLayout及高级菜单栏AppBarLayout、CollapsingBarLayout1、协调布局CoordinatorLayout安卓Material Design库中一个比较难的控件就是CoordinatorLayout协调布局。协调布局CoordinatorLayout继承自ViewGroup,类似于RelativeLayout。1.1、协调布局属性协调布局有两个重要

2.4k
Android

Android ViewPager 切换动画详解:PageTransformer 从原理到实战

Android ViewPager 切换动画详解:PageTransformer 从原理到实战ViewPager 默认的页面切换只是"水平平移",朴素到几乎没存在感。想做出"缩放淡化""3D 深度""旋转翻转"这类炫酷效果,靠的就是 PageTransformer——一个只有单个方法的接口,却是 ViewPager 动画的灵魂。本文从 position 参数的数学含义讲起,到两个官方经典实现、再到

222