Android
文章平均质量分 71
Android学习与踩坑记录
明朗晨光
You will never be ready!
展开
-
【Activity】基于Android9.0的startActivity流程分析(4):原Activity的onStop、onSaveInstanceState流程
目录5. 原Activity的onStop流程5.1ActivityStackSupervisor.scheduleIdleLocked5.2ActivityStackSupervisor.ActivityStackSupervisorHandler.handleMessage5.3 ActivityStackSupervisor.activityIdleInternalLoc...原创 2019-02-22 16:07:40 · 1935 阅读 · 0 评论 -
【Activity】上一个Activity onDestroy()调用在新的activity onCreate()之后完美解决方案
【自己测试时遇到的问题】频繁进入退出(点击back键)一个APP的Activity,有时候会出现上一个Activity的onStop和onDestroy在新的Activity的onCreate、onStart和onResume之后。原文:https://blog.csdn.net/qq_28334473/article/details/82388195【用Activity的时候,会发...转载 2019-01-16 16:05:12 · 2205 阅读 · 1 评论 -
【Activity】基于Android9.0的startActivity流程分析(3):新Activity的onStart流程、onResume流程
目录3. 新Activity的onStart流程4. 新Activity的onResume流程4.1 ResumeActivityItem.execute4.2ActivityThread.handleResumeActivity4.2.1 ActivityThread.performResumeActivity4.2.2Looper.myQueue().addIdle...原创 2019-02-21 15:56:09 · 3816 阅读 · 0 评论 -
【Service】bindService调用流程
bindService流程原创 2018-10-19 18:15:12 · 2615 阅读 · 0 评论 -
【Broadcast】registerReceiver流程
应用调用RegisterReciever,实质是调用的ContextImpl的registerReceiver,接下来跟一下这个流程:@Overridepublic Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter) { return registerReceiver(receiver, ...原创 2018-09-20 10:37:34 · 10536 阅读 · 0 评论 -
【Service】ServiceManager.getService流程总结
参考《深入理解Android内核设计思想》(第2版),对ServiceManager.getService流程分析过程中的一些总结进行记录备忘:ServiceManagerProxy 当某个Binder Server在启动时,会把自己的名称name与对应的Binder句柄值保存在ServiceManager中。调用者通常只知道Binder Server的名称,所以必须先向Se...原创 2018-09-14 19:59:57 · 8280 阅读 · 0 评论 -
【Activity】基于Android9.0的startActivity流程分析(2):新Activity的onCreate流程
上篇文章Android | 基于Android9.0的startActivity流程分析(1):原Activity的onPause流程最后PauseActivityItem.postExecute函数中起了新旧Activity的桥梁作用。接下来就从PauseActivityItem.postExecute函数入手,分析新Activity的onCreate流程。2. 新Activity的onCr...原创 2019-02-21 11:12:42 · 1860 阅读 · 0 评论 -
【Service】ServiceManager.getService的流程分析
本流程分析基于Android8.0。进程访问服务时,要先从ServiceManager中获取服务。以sendBroadcast的流程为例:sendBroadcast实际调用的是ContextImpl的sendBroadcast:///frameworks/base/core/java/android/app/ContextImpl.java@Overridepublic void...原创 2018-09-13 18:09:05 · 11734 阅读 · 3 评论 -
【Service】startService启动服务,应用置于后台超过1min,服务被销毁
分析基于Android8.0。【操作步骤】播放音乐 音乐切到后台,播放其他音源超过1min 再将音乐切到前台【结果】 音乐播放异常【原因】 应用在后台空闲超过1min,系统销毁了服务。 log中包含如下信息:ActivityManager: Stopping service due to app idle: u0a60 -1m14s699ms com...原创 2018-11-01 10:47:41 · 6826 阅读 · 0 评论 -
【Activity】Activity的不同生命周期中调用finish
基于Android8.0,本文仅记录不同生命周期中调用finish,Activity的生命周期执行顺序。Demo应用包含两个Activity:ActivityA和ActivityB,如下流程是在ActivityB的不同生命周期中调用finish函数。目录1.onCreate中调用finish2.onStart中调用finish3.onResume中调用finish4. on...原创 2019-03-07 13:28:22 · 1981 阅读 · 0 评论 -
【Broadcast】Android8.0 静态receiver接收不到隐式广播
Android8.0的新特性值得注意一下,不然会出现很多莫名的问题。。。后台执行限制Android 8.0 为提高电池续航时间而引入的变更之一是,当您的应用进入已缓存状态时,如果没有活动的组件,系统将解除应用具有的所有唤醒锁。此外,为提高设备性能,系统会限制未在前台运行的应用的某些行为。具体而言:现在,在后台运行的应用对后台服务的访问受到限制。 应用无法使用其清单注册大部分隐式广...原创 2018-09-28 20:26:23 · 12109 阅读 · 0 评论 -
【Broadcast】sendBroadcast流程(二)
上节:sendBroadcat流程(一)中分析了AMS.broadcastIntentLocked中的处理。接下来分析广播的派发过程,即分析BroadcastQueue.scheduleBroadcastsLocked函数。public void scheduleBroadcastsLocked() { if (DEBUG_BROADCAST) Slog.v(TAG_BRO...原创 2018-09-19 09:27:56 · 2737 阅读 · 0 评论 -
【Activity】Activity的启动模式:SingleInstance
目录1、概述2、详细过程2.1 启动MainActivity2.1.1 生命周期2.1.2 Activity栈2.2MainActivity中启动SecondActivity2.2.1 生命周期2.2.2 Activity栈2.3 SecondActivity中启动SecondActivity2.3.1 生命周期2.3.2 Activity栈2.4...原创 2019-03-05 11:03:51 · 1831 阅读 · 0 评论 -
【Activity】基于Android9.0的startActivity流程分析(5):总结
此前讲解了在前台Activity中启动新的Activity的流程,接下来用一幅整个流程的思维导图回顾一下:这里再次总结一下整个流程:原Activity.onPause -> 新Activity.onCreate ->新Activity.onStart ->新Activity.onResume->原Activity.onStop->原Activity.onS...原创 2019-02-28 16:27:42 · 602 阅读 · 0 评论 -
【Broadcast】sendBroadcast流程(一)
本文基于Androd8.0。广播发送有很多个函数,此处以最简单的sendBroadcast为例分析:sendBroadcast实际是调用的ContextImpl的sendBroadcast: @Override public void sendBroadcast(Intent intent) { warnIfCallingFromSystemProcess(); S...原创 2018-09-18 15:00:39 · 11974 阅读 · 0 评论 -
【Service】bindService:绑定本地服务和远程服务示例
绑定本地服务AndroidManifest.xml中声明服务: <service android:name=".TestLocalService"> <intent-filter> <action android:name="maureen.intent.action.BIND_LOCAL...原创 2018-10-31 14:55:13 · 2752 阅读 · 0 评论 -
【Service】adb命令dump的Service信息分析
命令:adb shell dumpsys activity –p com.android.music servicesdump出来的信息:ACTIVITY MANAGER SERVICES (dumpsys activity services) User 0 active services: * ServiceRecord{5cd8099 u0 com.android.mu...转载 2018-10-26 14:50:28 · 4013 阅读 · 0 评论 -
【Activity】基于Android9.0的Activity的finish流程分析
目录1. IActivityController.aidl1.1 接口中的方法说明1.2 应用如何使用IActivityController1.2.1 自行类实现IActivityController.Stub1.2.2 获取IActivityManager代理对象并调用setActivityController2. finish流程本文章意在分析Activity的fi...原创 2019-02-28 17:54:01 · 3544 阅读 · 0 评论 -
【Activity】 基于Android9.0的startActivity流程分析(1):原Activity的onPause流程
本文章基于Android9.0,测试demo为在一个已经启动的MainActivity中点击按钮通过调用startActivity启动SecondActivity,通过在源码中添加log定位分析整个流程。启动操作:startActivity(new Intent(this, SecondActivity.class));其实在前台Activity中启动另一个Activity的过程主要...原创 2019-02-20 15:58:17 · 2724 阅读 · 0 评论 -
【Activity】Activity的启动模式:SingleTask
目录1. 概述2. 详细过程2.1 启动MainActivity2.1.1 生命周期2.1.2 Activity栈2.2 MainActivity中启动SecondActivity2.2.1 生命周期2.2.2 Activity栈2.3 SecondActivity中启动MainActivity2.3.1 生命周期2.3.2 Activity栈2.4...原创 2019-03-04 19:45:37 · 1693 阅读 · 0 评论 -
【Activity】Activity的启动模式:SingleTop
目录1. 概述2. 场景1:MainActivity->SecondActivity->SecondActivity2.1 启动MainActivity2.1.1 生命周期2.1.2 Activity栈2.2 MainActivity中启动SecondActivity2.2.1 生命周期2.2.2 Activity栈2.3 SecondActivit...原创 2019-03-05 10:10:57 · 3416 阅读 · 0 评论 -
【Broadcast】Broadcast的数据结构
广播中涉及到的类很多,类之间的依赖关系也很多。简要列举一下用的较多的类的依赖关系:下图源自:http://gityuan.com/2017/06/03/broadcast_record/转载 2018-09-19 17:08:37 · 374 阅读 · 0 评论 -
Android | 说说Presentation
目录1、什么是Presentation2、获取屏幕2.1 使用media router来获取可以显示presentation的屏幕2.2 通过Display Manager来获取presentation display3、Presentation说明3.1 继承的常量3.2 构造函数3.3 公共方法3.4 Protected 方法4、其他1、什么是Pre...原创 2019-03-22 09:51:02 · 7428 阅读 · 0 评论 -
Activity跳转 两个界面
activity_main.xml原创 2014-07-29 14:32:08 · 450 阅读 · 0 评论 -
Android | 判断App处于前台还是后台的方案
很多场景下,都需要判断某个App处于前台还是后台。本文集网上编写的前台判断方案于一体。目前,有6种方案: 方法 判断原理 需要权限 可以判断其他应用位于前台 特点 ① RunningTask 否 Andorid4.0系列可以,5.0以上机器不行 Android5.0此方法被废弃 ② RunningProcess...转载 2018-01-18 21:24:30 · 49648 阅读 · 9 评论 -
界面跳转(同一个界面)
activity_main.xmlhttp://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"原创 2014-07-29 14:21:46 · 620 阅读 · 0 评论 -
Android生成缩略图的方法
Android9.0 之前,使用BitmapFactory生成缩略图。举例:使用ThumbnailTask生成缩略图,GridViewAdapter显示缩略图static class ThumbnailTask extends AsyncTask<Object, LoadedImage, Object> { private String path; ...原创 2018-11-14 17:50:54 · 4862 阅读 · 0 评论 -
Spinner 级联2
区别于上一篇文章,在代码中不带原创 2014-07-30 15:13:42 · 400 阅读 · 0 评论 -
Java Synthetic Method
参考链接:https://www.oschina.net/code/snippet_2438265_54869The Java Language Specification (section 13.1)Java语言规范13章写道 :由编译器产生的任何构建,如果在源码中没有对应的构建存在,那么这个构建就必须被标记为synthetic(除了默认构造器和类初始化方法。)原话如下:“Any constru...转载 2018-06-01 16:34:38 · 2128 阅读 · 4 评论 -
Android | 程序的停止状态
参考博客:https://zhuanlan.zhihu.com/p/250712281、什么是停止状态?①Android3.1开始,Package Manager开始跟踪处理停止状态的程序,并提供了从后台进程或其他程序对它们启动的方法;②程序的停止状态和Activity的停止状态不同,系统会分开处理这两种状态;③Android平台提供了两个Intent flag用来让广播发送...原创 2017-12-27 10:59:58 · 1406 阅读 · 0 评论 -
【Android】读取文件数据到byte数组,并将读出的数据写入文件中强制刷新
先要区分两个名词:FileInputStream和FileOutputStream。这两个名词都是相对于应用来说的,而不是相对于文件。从文件中读取数据时,使用FileInputStream;将数据写入文件中时,使用FileOutputStream。读取文件数据到byte数组典型做法:private byte[] readFileToByteArray(String path) { ...原创 2019-01-31 14:29:42 · 8174 阅读 · 0 评论 -
Listview 应用详解--应用适配器arrayadapter
这篇文章借鉴于http://www.cnblogs.com/allin/archive/2010/05/11/1732200.html 总结得非常全 写的例子也原创 2014-07-31 15:23:41 · 499 阅读 · 0 评论 -
Android | 打印堆栈
目录1. Java中打印堆栈1.1 Throwable类1.2 Debug类2.C++代码中打印堆栈3. C代码中打印堆栈4.Linux内核中打印堆栈5.动态方法5.1 dump java调用栈5.2 dump native栈5.3 查看内核栈1. Java中打印堆栈1.1 Throwable类堆栈信息获取和输出,都可以通过Throwable类的...原创 2019-03-11 17:01:57 · 1708 阅读 · 0 评论 -
Android | APP动态申请权限
为某个应用动态申请权限,code可以这么写:public MainActivity extends Activity { private final int REQUEST_EXTERNAL_STORAGE = 1; //指定的返回码 @override public void onCreate(Bundle saveInstanceState) { super.onCreat...原创 2019-03-18 13:51:51 · 1092 阅读 · 0 评论 -
Android--获取当前屏幕的旋转角度
有一个需求,倒车的时候要获知系统当前被旋转的度数,以便在重新启动平台显示的视频,和重启前的旋转度数一致。Activity中的orientation感知,只能知道屏幕是横屏还是竖屏,而无法知道具体的旋转角度。如下是亲测code:int angle = ((WindowManager)getSystemService(Context.WINDOW_SERVICE)).getDefault...原创 2018-01-03 14:00:33 · 9282 阅读 · 1 评论 -
分析Android布局的工具--LayoutInspector
该工具是位于AndroidStudio中:Tools->Layout Inspector。官网说明:https://developer.android.com/studio/debug/layout-inspector原创 2018-11-21 11:52:47 · 2072 阅读 · 0 评论 -
Android | Android.mk解析
1、LOCAL_PATH := $(call my-dir)所有Android.mk都要以LOCAL_PATH开头,call my-dir返回当前文件路径,即包含Android.mk的文件目录。2、 include $(CLEAR_VARS):CLEAR_VARS指定让GNU MAKEFILE清楚除了LOCAL_PATH变量外的其他LOCAL_XX变量(如LOCAL_MODULE、...原创 2018-10-24 10:01:01 · 1634 阅读 · 0 评论 -
Java中的自动装箱与拆箱
原文链接:http://droidyue.com/blog/2015/04/07/autoboxing-and-autounboxing-in-java/自动装箱和拆箱从Java 1.5开始引入,目的是将原始类型值转自动地转换成对应的对象。自动装箱与拆箱的机制可以让我们在Java的变量赋值或者是方法调用等情况下使用原始类型或者对象类型更加简单直接。如果你在Java1.5下进行过转载 2017-11-27 18:57:03 · 157 阅读 · 0 评论 -
Android | APP的启动时间计算
本文转自https://juejin.im/entry/5aa24615f265da237b21aede➜ adb shell am start -W com.media.painter/com.media.painter.PainterMainActivityStarting: Intent { act=android.intent.action.MAIN cat=[android.in...转载 2018-10-24 09:43:01 · 713 阅读 · 0 评论 -
Android | 一个简单实用的Android调试应用技巧
转载自:https://droidyue.com/blog/2017/05/14/a-little-but-useful-debug-skill_for_android/在应用开发中,我们常常会进行日志打印或者debug调试,以此来分析运行时的一些信息,便于发现bug和问题。Android Studio的Debug功能很好用,但是有时候有些情况下,就显得不是那么快捷和便利。比如我们调试...转载 2018-10-09 21:20:23 · 296 阅读 · 0 评论