![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
文章平均质量分 64
grace_dl
拼命搬砖中...
展开
-
Android4.4.4之bug总结
我们平时做Android手机的平台适配工作,绕不开的问题就是对不同Android版本的适配,以下总结了在实际应用中Android4.4.4遇到的一些问题。应用安装后运行异常我们的应用在升级以后,理论上来说,运行的是最新的apk逻辑,然而,在Android4.4.平台上面,如果是系统预置应用,运行的是旧代码。如果minifest的四大组件有删除,就会出现类似于minifest中定义的类找不到等问题而产生崩溃。总结:此问题目前通过系统重启,问题会自动消失。主要是因为系统应用开机的时候预加载,即使新的ap原创 2021-12-20 14:55:50 · 2557 阅读 · 0 评论 -
Android9坑之总结
我们平时做Android手机的平台适配工作,绕不开的问题就是对不同Android版本的适配,以下总结了在实际应用中Android9遇到的一些问题。Activity生命周期异常。(1) 在Android9的平台上面,我们先启动A应用的AActivity。(2) 然后再启动B应用的BActivity。(3)手动killBActivity,或者BActivityu因为某些异常退出。异常:AActivity无法走到onResume卡住。总结:目前只发现在Android9平台有此问题。...原创 2021-12-20 11:17:23 · 2020 阅读 · 0 评论 -
Android studio坑之签名异常
使用android studio工具编译apk,我们一般采用run,build,gradlew assemble集中方式编译。理论上编译出来的apk应该是一样的,实际呢?先描述下踩坑的结果:通过build和gradlew assemble方式编译的apk,apk正常签名,通过run编译出来的apk,里面竟然没有签名文件,纳尼???定义签名signingConfigs { sign { storeFile file(getKeyStoreFile('****.原创 2021-12-14 15:51:30 · 1788 阅读 · 3 评论 -
gradle升级踩坑指南
升级gradle后,除了语法的切换,还有各种各样奇奇怪怪的问题,这里我们大致总结下。1.升级步骤(1)修改gradle-wrapper.properties版本distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip(2)修改项目根目录build.gradledependencies { classpath "com.android.tools.build:gradle:4.1.3"原创 2021-12-03 11:15:21 · 4198 阅读 · 2 评论 -
Kotlin易踩坑之委托的使用(一)
文章目录前言一、Koltin委托常见使用1.避雷指南一总结前言刚开始接触kotlin的委托,深深的koltin的委托吸引,初见,so easy,真的是码农的福音,语法糖,简洁;委托,真是方便。一、Koltin委托常见使用1.避雷指南一我们平时使用的成员变量委托,常见的使用方式如下:代码如下(示例):private val mA:A by lazy { A() }官方是这样描述的:通过by lazy的方式,上述代码中的A对象只会被创建一次,并且只有在第一次调用的原创 2021-12-02 21:24:41 · 2156 阅读 · 0 评论 -
多渠道管理应用
文章目录前言一、案例演示平台二、解决多平台的代码开发问题场景一:生产某种水果场景二:不同的水果需要施品种不同的肥料场景三:我们需要的香蕉能够手动剥皮总结前言最近在做项目中,需要适配不同的平台,不同平台功能不同,每个平台如果都需要咔嚓咔嚓写一堆代码,脑壳疼。为此,我们需要通过多渠道去解决这些问题。一、案例演示平台我这里主要是通过androidStudio来演示如何解决这些问题。工具的下载方式,网上一大堆,这个不是我们重点描述的内容,自行解决。二、解决多平台的代码开发问题场景一:生产某种水果假原创 2021-02-18 18:49:29 · 410 阅读 · 0 评论 -
抓取日志并保存到本地
抓取日志并保存到本地通过代码抓取应用打印的日志并保存到本地目录下文章目录抓取日志并保存到本地前言一、参考方案1.通过在代码中执行Linux命令实现总结前言我们的应用在使用的过程中,有的时候随机出现异常,复现难度高,这个时候应用能够自己抓取日志并保存到本地对码农来说,就非常的重要。提示:以下是本篇文章正文内容,下面案例可供参考一、参考方案1.通过在代码中执行Linux命令实现代码如下(示例): //获取当前进程的pid int pid = android.os.Process.my原创 2021-02-05 15:36:09 · 1440 阅读 · 0 评论 -
Android通过代码重启设备
Intent intent = new Intent(Intent.ACTION_REBOOT);intent.putExtra("nowait", 1);intent.putExtra("interval", 1);intent.putExtra("window", 0);this.sendBroadcast(intent);原创 2020-10-27 16:00:44 · 678 阅读 · 0 评论 -
Fragment的使用
我们在实际的应用中,页面之间的切换,如果使用Activity的话,太沉重了,这个时候,Fragment就是一个不错的选择。接下来我们用一个例子来实现它:通过一个页面启动另一个页面,并且可以返回到之前的页面。先创建一个Activity public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) {原创 2020-10-13 21:29:42 · 136 阅读 · 0 评论 -
网络请求框架,volley和Async网络框架
网络请求框架,volley和Async网络框架1、volley特点:1)适合数据量不大但是通信频繁的场景。2)网络通信快,简单,健壮3)Get,Post网络请求及网格图像的高效率异步处理请求。4)可以对网络请求进行排序优先级。5)网络的请求缓存6)多级别取消请求7)和Activity生命联动(Activity结束的同时取消所有的网络请求)8)不适合大数据的请求,如几百兆的视频。标题2、Android-async-http1、清晰的请求回调2、请求时基于线程池,限制并发资源的使用情况原创 2020-10-10 17:04:06 · 113 阅读 · 0 评论 -
Android manifest详解
1、versionCode使用versionCode属性可将当前应用程序版本定义为一个整数,每次版本迭代的时候,这个数字都会增加。使用versionCode可定义一个显示给用户的公共版本号。如图:2、installLocation通常使用installLocation属性,还可以指定是否允许为(或者首选)将应用程序安装到外部存储器(通常是SD卡)而不是内部存储器上。为此,可原创 2016-06-16 17:21:09 · 517 阅读 · 0 评论 -
可揉动的图片
public class MainActivity extends AppCompatActivity{ private Bitmap bitmap = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceS原创 2016-06-15 15:50:33 · 670 阅读 · 1 评论 -
[Android] 异步消息处理机制(Handler 、 Looper 、MessageQueue)源码解析
1、Handler的由来 当程序第一次启动的时候,Android会同时启动一条主线程( Main Thread)来负责处理与UI相关的事件,我们叫做UI线程。 Android的UI操作并不是线程安全的(出于性能优化考虑),意味着如果多个线程并发操作UI线程,可能导致线程安全问题。 为了解决Android应用多线程问题—Android平台只允许UI线程修改A转载 2016-06-15 10:32:40 · 530 阅读 · 0 评论 -
[Android] Android启动过程图解
Android手机开机执行过程图: 从开机到桌面的过程为:Bootloader ➪Kernel ➪Init进程 ➪ Zygote ➪ SystemServer ➪ ServiceManager ➪ Home Launcher Android服务包括系统服务和应用服务,系统服务是指Android系统在启动过程就已经启动实现了的服务,对于系统服务又分为Java服务和本转载 2016-06-15 10:24:41 · 441 阅读 · 0 评论 -
图片切换马赛克动画效果
1、创建初始化界面的定义类public class AniPlayer { private RelativeLayout mBox = null; private Context mContext = null; public static final AniPlayer INST = new AniPlayer(); private boolean isPlaying = false原创 2016-06-15 10:13:24 · 1163 阅读 · 0 评论 -
Android内存优化大全(二)
*Android内存泄露*虽然JAVA有垃圾回收机制,但也存在内存泄露。如果我们一个程序中,已经不再使用某个对象,但是因为仍然有引用指向它,垃圾回收器就无法回收它,当然该对象占用的内存就无法被使用,这就造成了内存泄露。如果我们的java运行很久,而这种内存泄露不断的发生,最后就没内存可用了。当然java的,内存泄漏和C/C++是不一样的。如果java程序完全结束后,它所有的对象就都不可达了,系转载 2016-06-08 17:34:48 · 412 阅读 · 2 评论 -
Android 面试题总结之Android 进阶(一)
Android 面试题总结之Android 进阶一掌握什么是ViewView 坐标的基本概念View的生命周期View 的几个构造函数View 的几个重要方法自定义View简单理解View的绘制自定义View的分类自定义View的过程自定义ViewGroup自定义ViewGroup的过程彻底理解MeasureSpec三种模式问题总结掌握转载 2016-06-08 17:29:59 · 441 阅读 · 0 评论 -
自定义XML文件
1、创建xml文件内容,books.xml 正见-佛陀的证悟 遇见未知的自己 不一样的烟火2、显示的布局xml文件<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/too原创 2016-06-08 17:07:45 · 710 阅读 · 0 评论 -
不断渐变的背景色
1、创建显示的xml布局<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_原创 2016-06-08 15:20:15 · 473 阅读 · 0 评论 -
Animation动画
1、创建动画展示的xml布局<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layou原创 2016-06-08 11:58:12 · 339 阅读 · 0 评论 -
ClipDrawable资源之徐徐展开的风景
1、创建展示的xml文件<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_原创 2016-06-08 11:02:39 · 352 阅读 · 0 评论 -
Android Application类详解
每次应用程序启动的时候,应用程序的Application类都会保持实例化的状态、与Activity不同,配置改变并不会导致应用程序重启,通过扩展Application类,可以完成以下三项工作:对Android运行时广播的应用程序级时事件(如低内存)做出响应。在应用程序之间传递对象管理和维护多个应用程序组件使用资源如下:原创 2016-06-17 11:10:47 · 610 阅读 · 1 评论 -
Java ConcurrentModificationException异常原因和解决方法
Java ConcurrentModificationException异常原因和解决方法 在前面一篇文章中提到,对Vector、ArrayList在迭代的时候如果同时对其进行修改就会抛出java.util.ConcurrentModificationException异常。下面我们就来讨论以下这个异常出现的原因以及解决办法。 以下是本文目录大纲: 一.Concurr转载 2016-06-21 17:52:47 · 300 阅读 · 0 评论 -
安卓问题集锦
问题1:The specified child already has a parent. You must call removeView()原因:一个孩子只能有一个父亲,在调用的过程中同一个孩子出现了两个父亲。解决方案:在添加视图之前断除孩子和其他父亲的关系。?12345View原创 2016-03-09 16:29:56 · 263 阅读 · 0 评论 -
Android多进程注意事项
一般来说,使用多进程会造成如下几个方面的问题:静态成员和单利模式完全失效 安卓会为每一个应用分配一个独立的虚拟机,或者说为每个进程都分配一个独立的虚拟机,不同的虚拟机在内存分配上有不同的地址空间,这就导致不同的虚拟机中访问的同一个类的对象会产生多份副本。线程同步机制我完全失效 本质和上面的类似,既然都不是一块内存了,那么不管是锁对象还是锁全局类,都无法保证线程同步。因为不同进程锁的不是...原创 2018-05-15 15:27:01 · 261 阅读 · 0 评论 -
Android遇到的那些问题
Android遇到的那些问题使用工具:Android studioNo resource found that matches the given name: attr ‘android:keyboardNavigationCluster’. when updati原因分析:这个问题的出现主要是因为编译版本与support-v7的版本不一致引起的,所以会出现找到资源的提示。 解...原创 2018-03-02 10:28:12 · 3912 阅读 · 0 评论 -
不为人知的IPC
1、开启多进程模式 创建多进程的方式,通过四大组件指定android:process;或者非常规的操作,通过JNI在native层去fork一个新的进程(非常常用方式)。这里暂不对fork方式多做分析。 (1)android:proces = “:remote” (2)android:proces = “com.grace.remote” 这两种方式有什么差别呢? (1)方式一的进程名为原创 2018-01-29 17:50:57 · 202 阅读 · 0 评论 -
浅尝MVVM
对于安卓开发,设计鼻祖MVC的思想,让Actvity承担的责任更重,造成xml功能弱小,Actvity累死。小型项目可以拿来试试,中大型项目不建议考虑,不然几千几万行的Actvity会让你发狂。于是,顺势而为,MVP诞生。将xml和Activty都划分到view层,model依然作为业务逻辑和实体模型的载体。这个时候Presenter横空出世。作为view和Model之间的交互。但是代码量大大原创 2017-06-20 15:14:46 · 357 阅读 · 3 评论 -
Android String.xml文件中空格字符的输入
在string.xml定义字符串的时候经常要用到空格, 直接用键盘敲的话不知道是几个空格,经常看错了,导致误删。如果用 来替代空格的话,就好很多。另外使用%1$s,%1$d可以在一个字符串里定义多个统配字符。原创 2016-12-28 10:56:34 · 718 阅读 · 0 评论 -
ContentProvider和ContentResolver的使用
创建ContentProviderpublic class FirstProvider extends ContentProvider{ public FirstProvider() { } @Override public int delete(Uri uri, String selection, String[] selectionArgs)原创 2016-08-12 15:42:59 · 533 阅读 · 0 评论 -
使用SQL语句操作SQLite数据库
public class MainActivity extends Activity{ private SQLiteDatabase db; private ListView listView; @Override protected void onCreate(Bundle savedInstanceState) { super.onC原创 2016-08-12 11:55:53 · 502 阅读 · 0 评论 -
读写其他应用的SharedPreferences
要读写其他应用的SharedPreferences,前提是该SharedPreferences饿应用程序指定相应的访问权限,例如指定了MODE_WORLD_READABLE,这表明该SharedPreferences可被其他应用程序读取,指定了MODE_WORLD_WRITABLE,这表明该SharedPreferences可被其他程序写入。public class MainActivity原创 2016-08-10 17:48:10 · 316 阅读 · 0 评论 -
SharePreference之记录应用的使用次数
public class MainActivity extends Activity{ private SharedPreferences sharedPreferences; private SharedPreferences.Editor editor; @Override protected void onCreate(Bundle savedInsta原创 2016-08-10 17:06:26 · 707 阅读 · 0 评论 -
Service和IntentService
IntentService是Service的子类,他不是普通的Service,比普通的Service增加了额外功能。Service本身存在两个问题:Service不会专门启动一条单独的线程,Service与它所在的应用处于同一个进程中。Service也不是一条新的线程,因此不应该在Service中直接处理耗时任务。如果开发者需要在Service中处理耗时任务,建议在Service中原创 2016-06-22 15:05:56 · 491 阅读 · 3 评论 -
自定义文本背景,圆角边框
1、创建基础的xml布局文件<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="ve原创 2016-06-07 17:01:22 · 385 阅读 · 0 评论 -
自定义View
1、自定义类:DrawViewpublic class DrawView extends View{ public float currentX = 40; public float currentY = 50; Paint p = new Paint(); public DrawView(Context context) { su原创 2016-06-07 14:53:50 · 235 阅读 · 0 评论 -
Webp动图的使用方法
随着智能设备的应用越来越多,占用内存越来越大,apk的大小也逐渐被关注,而影响apk大小的一个很主要的原因就是图片占用内存太多,目前,比较好的使用方法是使用webp格式的图片,或者动图加载,能够将apk的大小减小到40%左右。现在Android对于webp普通的图片适配已经做的比较好了,就像普通的图片加载方式一样加载就可以了。对于webp动图,这里就需要借助工具了。首先加载依赖工具de原创 2016-05-28 17:56:19 · 13664 阅读 · 3 评论 -
随笔提示文本
1. Demo.javapublic class Demo extends AppCompatActivity { private static final String DATA[] = new String[] { "hello","hello ok","hello nihao","hello waitting","hello banana" //自动提示信息原创 2016-05-28 16:09:21 · 283 阅读 · 0 评论 -
拖动条SeekBar
1. SeekBarDemopublic class SeekBarDemo extends AppCompatActivity { private SeekBar seekBar = null; private TextView textView = null; @Override protected void onCreate(Bundle savedIn原创 2016-05-28 16:10:11 · 240 阅读 · 0 评论 -
文件异步下载
1. MainActivitypublic class MainActivity extends AppCompatActivity { private TextView show; private Button mbut; @Override protected void onCreate(Bundle savedInstanceState) {原创 2016-05-28 16:17:53 · 1335 阅读 · 0 评论