
Android
文章平均质量分 71
Android学习与踩坑记录
明朗晨光
You will never be ready!
展开
-
ANR分析
目录1. 简要说明2.ANR产生的原因3.ANR的类型3.1 InputDispatching timeout3.1.1 超时原因3.1.2 如何避免3.1.3 如何分析3.2 BroadcastQueue timeout3.3 Service timeout3.4 ContentProvider timeout4. 线程状态5.实例5.1 应用...原创 2019-04-14 17:54:09 · 5208 阅读 · 0 评论 -
Android | 创建文件时出现java.io.IOException: Permission denied
Android8.0上,用AS写了个demo,想要创建文件cache.txt,code如下:File filePath = new File("storage/udisk2/cache.txt"); if (!filePath.exists()) { Log.d(TAG,"file is not exist"); filePath.createNewF...原创 2019-03-26 19:48:56 · 40475 阅读 · 10 评论 -
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 · 7591 阅读 · 0 评论 -
在Android Studio中下载Android SDK的两种方式(Android Studio3.0、windows)
方式一、设置HTTP Proxy1. 打开Settings2. 点击HTTP Proxy,选择Manual proxy configuration:设置 Host name 为:mirrors.neusoft.edu.cn 设置 Port number 为:80 3. 点击Android SDK,...转载 2019-03-21 16:07:54 · 3901 阅读 · 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 · 1146 阅读 · 0 评论 -
SQLiteDatabaseLockedException: database is locked (code 5): , while compiling: PRAGMA journal_mode
目录1. database is locked的原因(1)多线程访问造成的数据库锁定(2)执行事务操作未正常关闭(3)sqlite自身问题2. 解决办法(1)办法1解决问题1:避免重复打开数据库解决问题2:如果当前执行的是许多sql语句,要用到事务怎么办?解决问题3:如果在多线程下执行query方法怎么办,如果处理close?解决问题4:实际使用过程中,很容...转载 2019-03-14 20:15:31 · 17893 阅读 · 1 评论 -
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 · 1837 阅读 · 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 · 2083 阅读 · 0 评论 -
AndroidStudio3.3.1 支持 Java8
如下是androidstudio的版本信息:为了让该版本支持Java 8,需要更改Gradle Scripts下的Module的build.gradle文件,在android域内新增如下代码块即可://Support Java8compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCom...原创 2019-03-05 11:12:40 · 1345 阅读 · 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 · 1868 阅读 · 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 · 3467 阅读 · 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 · 1738 阅读 · 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 · 3622 阅读 · 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 · 625 阅读 · 0 评论 -
【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 · 2022 阅读 · 0 评论 -
【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 · 3996 阅读 · 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 · 1919 阅读 · 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 · 2786 阅读 · 0 评论 -
【Android】读取文件数据到byte数组,并将读出的数据写入文件中强制刷新
先要区分两个名词:FileInputStream和FileOutputStream。这两个名词都是相对于应用来说的,而不是相对于文件。从文件中读取数据时,使用FileInputStream;将数据写入文件中时,使用FileOutputStream。读取文件数据到byte数组典型做法:private byte[] readFileToByteArray(String path) { ...原创 2019-01-31 14:29:42 · 8493 阅读 · 0 评论 -
【Activity】上一个Activity onDestroy()调用在新的activity onCreate()之后完美解决方案
【自己测试时遇到的问题】频繁进入退出(点击back键)一个APP的Activity,有时候会出现上一个Activity的onStop和onDestroy在新的Activity的onCreate、onStart和onResume之后。原文:https://blog.youkuaiyun.com/qq_28334473/article/details/82388195【用Activity的时候,会发...转载 2019-01-16 16:05:12 · 2352 阅读 · 1 评论 -
Android 禁止自动休眠、设置默认锁屏方式为None
Android系统原生的默认锁屏方式是Swipe,且会自动休眠。现在项目需要设置默认锁屏方式为None,并禁止自动休眠。系统的默认属性值的数据库是由frameworks\base\packages\SettingsProvider\src\com\android\providers\settings\DatabaseHelper.java创建的,默认初始值:\frameworks\ba...原创 2018-12-28 11:50:27 · 7730 阅读 · 1 评论 -
视频画面帧的展示控件SurfaceView及TextureView对比
版权声明:我已委托“维权骑士”(rightknights.com)为我的文章进行维权行动.转载务必转载所有,且须注明出处。否则保留追究法律责任 https://blog.youkuaiyun.com/hejjunlin/article/details/58582919 转载请把...转载 2018-12-12 16:01:05 · 485 阅读 · 2 评论 -
android.app.Fragment$InstantiationException异常的解决方案
可编译通过,但是运行的时候就crash。异常堆栈:(181130_17:03:40.550)11-29 15:48:54.149 3202 3202 E AndroidRuntime: Process: com.android.settings, PID: 3202(181130_17:03:40.550)11-29 15:48:54.149 3202 3202 E Andro...原创 2018-11-30 20:25:25 · 4311 阅读 · 0 评论 -
Android 去除“Viewing full screen”弹窗
这篇文章可结合Android9.0 完全隐藏导航栏、状态栏Android应用设置沉浸式全屏时,一般会使用到如下的Flag:View.SYSTEM_UI_FLAG_IMMERSIVE或View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY以及View.SYSTEM_UI_FLAG_HIDE_NAVIGATION。使用了以上的Flag组合后呢,系统会弹窗提示用户当前是全屏...原创 2018-11-27 17:06:38 · 4364 阅读 · 3 评论 -
分析Android布局的工具--LayoutInspector
该工具是位于AndroidStudio中:Tools->Layout Inspector。官网说明:https://developer.android.com/studio/debug/layout-inspector原创 2018-11-21 11:52:47 · 2124 阅读 · 0 评论 -
使用fragment,出现错误“commit already called”
错误信息:10-28 21:33:40.036 20313 20313 E AndroidRuntime: FATAL EXCEPTION: main10-28 21:33:40.036 20313 20313 E AndroidRuntime: Process: com.android.settings, PID: 2031310-28 21:33:40.036 20313 203...原创 2018-11-19 15:42:19 · 1172 阅读 · 0 评论 -
Android9.0 完全隐藏导航栏、状态栏
需求:自定义界面全屏显示,隐藏导航栏,状态栏按照google的官方办法,设置如下几个Flag就可以隐藏导航栏:View decorView = getWindow().getDecorView();// Hide both the navigation bar and the status bar.// SYSTEM_UI_FLAG_FULLSCREEN is only availa...原创 2018-11-15 17:01:38 · 34200 阅读 · 7 评论 -
Android生成缩略图的方法
Android9.0 之前,使用BitmapFactory生成缩略图。举例:使用ThumbnailTask生成缩略图,GridViewAdapter显示缩略图static class ThumbnailTask extends AsyncTask<Object, LoadedImage, Object> { private String path; ...原创 2018-11-14 17:50:54 · 5025 阅读 · 0 评论 -
【Service】startService启动服务,应用置于后台超过1min,服务被销毁
分析基于Android8.0。【操作步骤】播放音乐 音乐切到后台,播放其他音源超过1min 再将音乐切到前台【结果】 音乐播放异常【原因】 应用在后台空闲超过1min,系统销毁了服务。 log中包含如下信息:ActivityManager: Stopping service due to app idle: u0a60 -1m14s699ms com...原创 2018-11-01 10:47:41 · 7022 阅读 · 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 · 2815 阅读 · 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 · 4225 阅读 · 0 评论 -
selinux权限问题
adb修改selinuxEnforcing(表示已打开),Permissive(表示已关闭)getenforce; //获取当前selinux状态setenforce 1; //打开selinuxsetenforce 0; //关闭selinux从kernel中彻底关闭修改/linux/android/kernel/arch/arm64/configs/xxx_defconf...原创 2018-10-24 10:25:22 · 6652 阅读 · 0 评论 -
矢量图代替PNG/JPG
转自:https://www.jianshu.com/p/0555b8c1d26a海量矢量图:http://iconfont.cn/Android 应用开发时,会经常使用到图片。对于一些比较简单的图片,可以使用矢量图替代。SVG可缩放矢量图形(英语:Scalable Vector Graphics,SVG)是一种基于可扩展标记语言(XML),用于描述二维矢量图形的图形格式。 SVG...转载 2018-10-24 10:14:45 · 3446 阅读 · 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 · 1831 阅读 · 0 评论 -
某个文件名称显示颠倒且显示位置错误
【异常现象】该文件的名称是آموزش نصب پارکت.MP4,可见后缀名和文件名显示颠倒了。【分析】显示异常的文件名中包含了阿拉伯字符,而阿拉伯语的阅读习惯是从右到左,所以google默认显示阿拉伯字符时,会以RTL(Right to Left)的方式显示。因此文件名显示颠倒。左边显示了空白部分,是因为显示文件名的TextView的width设置的是fill_parent,...原创 2018-10-24 09:51:08 · 2158 阅读 · 2 评论 -
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 · 773 阅读 · 0 评论 -
Android8.0 Toast使用注意
Toast是一个用于提示信息的控件。但是在Android8.0上,这个Toast有些改变,使用需要小心。考虑以下场景:一个应用(同一个UID)在同一时间内显示两个Toast对象,假设A、B A调用了显示,显示了出来 A还在显示中,B也调用了显示,准备显示预期结果: A隐藏,B消失实际结果: A继续显示,B没有显示更糟糕的事情: 后面如果程序中再次调...原创 2018-10-24 09:34:15 · 5597 阅读 · 0 评论 -
Android | setImageResource、setImageDrawable和setImageBitmap的区别
最近遇到ImageView控件设置的图片延迟才显示的问题(虽然最终发现原因是图片是全透明的)。顺势跟踪了一下给ImageView设置图片的源码。以下分析都是基于Android8.0setImageResource源码中对该接口的注释: /** * Sets a drawable as the content of this ImageView. * ...原创 2018-10-23 11:43:10 · 20802 阅读 · 0 评论 -
【Service】bindService调用流程
bindService流程原创 2018-10-19 18:15:12 · 2707 阅读 · 0 评论 -
Android自定义属性(二):format解析
转载自:https://www.jianshu.com/p/2c566331a71dres/values/attrs.xml是R.attr和R.styleable类的定义文件,attrs.xml定义了每个view的可用属性,每个属性可以在自定义的时候,通过foramt决定属性值的类型。下文就是分析format取值类型。1、reference:参考某一资源ID(1)属性定义&l...转载 2018-10-10 14:03:49 · 2646 阅读 · 0 评论