
Android
文章平均质量分 52
AsiaLYF
从事Android相关开发,关注Flutter Kotlin Jetpack Compose等开发语言。
展开
-
TCP/IP协议、HTTP协议
TCP/IP协议、HTTP协议介绍原创 2022-11-02 16:15:36 · 21419 阅读 · 4 评论 -
ThreadPoolExecutor线程池的简单介绍
在编程中经常会使用线程来异步处理任务,但是每个线程的创建和销毁都需要一定的开销。如果每次执行一个任务都需要开一个新线程去执行,则这些线程的创建和销毁将消耗大量的资源,并且线程都是“各自为政”的,很难对其进行控制,更何况有一堆的线程在执行。这时就需要线程池来对线程进行管理,通过线程池中线程的复用,减少创建和销毁线程的性能开销,也能控制线程池中的并发数,否则会因为大量的线程争夺CPU资源造成阻塞。1...原创 2020-01-20 16:25:05 · 428 阅读 · 0 评论 -
Synchronized的基本使用
Synchronized的作用简单来说:就是能够保证在同一时刻最多只有一个线程执行该段代码,已达到保证并发安全的效果。地位:1、Synchronized是Java的关键字,被Java语言原生支持2、是最基本的互斥同步手段3、是并发编程中的元老级角色,是并发编程中必学内容不使用Synchronized带来的后果示例:两个线程同时操作一个变量,实现不断累加的效果。public clas...原创 2020-01-08 14:23:42 · 402 阅读 · 0 评论 -
Android Notification 通知的使用,不同版本兼容问题
Notification可以让我们在获取消息的时候,在状态栏、锁屏界面来显示相应的信息。由于不同厂商对Notification做了深度定制,导致部分属性设置了没有效果;而且随着Android 版本的不断升级,不得不去解决Notification的兼容问题。由于目前市场上手机的系统版本基本都在Android4.4以上,所以Android4.4之前版本就不需要考虑了。参考文章:[https://w...原创 2019-12-19 14:17:17 · 2803 阅读 · 0 评论 -
Android 5.0之后隐式声明Intent 启动Service引发的问题
一.概述 Android系统升级到5.0之后做了不少的变化(5.0变化),开发人员一定要注意这些变化,要不然就有的折腾了.这次最大的变化应该是把Dalvik虚拟机改成了ART(Android Runtime),后续会专门讲解这一块.其他的都是一些零碎的问题,例如前段时间发了一篇Android 5.0之后修改了HashMap的实现(传送门).这篇主要讲一下遇到跟Service转载 2016-10-07 18:23:42 · 704 阅读 · 0 评论 -
Android Studio开发环境创建aidl文件,并生成相应的java文件
AndroidStudio的aidl文件默认放在src/main/aidl目录下,aidl目录和java目录必须同级别,否则将找不到定义的接口在java目录上右键,创建一个aidl文件,此文件会默认生成到aidl目录下。同时必须要指明包名,包名必须和java目录下的包名一致。Model类必须要实现Parcelable接口!如果aidl原创 2016-10-07 18:01:25 · 2313 阅读 · 0 评论 -
从0开始学习 GitHub 系列之:向GitHub 提交代码
文章链接:1.http://mp.weixin.qq.com/s?__biz=MzA4NTQwNDcyMA==&mid=2650661735&idx=1&sn=9aceac07d272e9202d1b5294f857a5ff&scene=21#wechat_redirect&ADUIN=1044637771&ADSESSION=1476681269&ADTAG=CLIENT.QQ.5497_.原创 2016-10-17 20:01:19 · 574 阅读 · 0 评论 -
Android6.0以上 上传图片时 需要进行权限申请
文章来自于:点击打开链接一、 官方推荐的权限最佳实践如果没有节制地频繁请求权限很容易使用户反感,如果用户发现app需要大量的敏感权限,很可能会拒绝使用甚至直接卸载。以下几点可以有效地提升用户的使用体验。1. 考虑使用Intent在很多情况下,你可以有两种选择实现你的操作,一种是直接app中请求比如摄像头这样的权限,然后调用摄像头APIs去控制摄像头并获取照片。这种方转载 2016-07-19 17:28:16 · 10487 阅读 · 0 评论 -
Fresco 一个强大的图片加载框架
1.Image Pipeline Fresco 中设计有一个叫做 Image Pipeline 的模块。它负责从网络,从本地文件系统,本地资源加载图片。为了最大限度节省空间和CPU时间,它含有3级缓存设计(2级内存,1级磁盘)。 2.Drawees Fresco 中设计有一个叫做 Drawees 模块,它会在图片加载完成前显示占位图,加载成功后自动替换为目标图片。当图片不再显示在屏幕上时,它会原创 2016-11-04 15:41:01 · 691 阅读 · 0 评论 -
Android 沉浸式状态栏实现及细节处理
谈到沉浸式,好多应用都在使用,解决方案要么就是状态栏透明化,要么就是状态栏改为跟主题颜色一致不过版本4.4和5.0显示效果有一定的差异,所以代码中要对手机版本做下判断,从源码中可以看出5.0之前的版本,状态栏的高度是25不多赘述,看代码吧:public void initTransparencyTitle(int color) { if (Build.VERS原创 2016-10-21 13:43:17 · 584 阅读 · 1 评论 -
Android中Release版本去掉Log的方法
文章转自:http://blog.youkuaiyun.com/hp910315/article/details/52488474一、自定义BuildConfig字段在gradle配置文件中,定义LOG字段,默认为truebuildConfigField "boolean", "LOG", "true"同步一下工程,查看app/build/generated/source/Bu转载 2016-09-23 04:01:26 · 2944 阅读 · 0 评论 -
Android 通过URI加载网络图片bitmap
请求网络要在子线程中进行,对UI的操作要放在主线程package com.example.picturefromnet;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Bundle;import a...原创 2016-09-11 18:59:34 · 10766 阅读 · 1 评论 -
Android 图片加载库Glide的使用(文章链接)
优快云博客:http://blog.youkuaiyun.com/greathfs/article/details/52040658 http://blog.youkuaiyun.com/theone10211024/article/details/45557859博客园:http://www.cnblogs.com/whoislcj/p/5558168.html原创 2016-08-30 14:27:26 · 572 阅读 · 0 评论 -
通过remoteViews自定义Notification通知栏的布局
remoteViews,是一种远程view,通过跨进程更新自己的界面,主要用于通知栏和桌面小部件的开发过程中。1、自定义Notification布局public class MainActivity extends Activity implements View.OnClickListener { private Button btn_one; private Notificatio原创 2016-11-10 19:24:51 · 2731 阅读 · 0 评论 -
Android studio 炫酷的Log日志打印
一、 先看效果二、设置File->Settings 或Ctrl + Alt +S找到 Editor -> Colors &Fonts -> Android Logcat 或在上面的搜索框中输入Logcat点中Verbose , Info, Debug等选项,然后在后面将Use Inberited attributes 去掉勾选再将 Foreground 前的复选框选上,转载 2016-11-15 23:19:01 · 2347 阅读 · 0 评论 -
SwipeRefreshLayout 下拉刷新、上拉加载的使用
一、SwipeRefreshLayout简单介绍1、SwipeRefreshLayout是Google推出的刷新控件。 2、可以设置下拉刷新的高度,达到一定高度时才会刷新 3、使用该控件实现刷新时,需要在这个布局里包裹可以滑动的子控件,如ListView等,并且只能有一个子控件。 4、SwipeRefreshLayout只实现了下拉刷新功能,上拉加载需要自定义实现二、SwipeRef...原创 2018-03-20 11:20:44 · 5914 阅读 · 2 评论 -
Logger: Android日志系统第三方库
1、logger介绍Logger的出现简化了我们开发过程中打印Log的繁琐,源于他的过滤,使得打印的日志更加清晰明了,增加了可读性。功能:打印线程的信息打印类的信息打印方法的信息可以打印list、map、json、xml不必每次输入TAG信息过长会自动换行从日志直接跳转到源码2、logger使用2.1 导入依赖 implementation 'c原创 2018-01-15 18:15:54 · 4554 阅读 · 1 评论 -
Android studio 统一管理依赖版本号
方式一(推荐)1.在根目录下的build.gradle文件下添加 ext{ …. } 中的内容buildscript { repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.0.1'原创 2017-12-12 17:34:51 · 2839 阅读 · 2 评论 -
Android studio2.3来了,也带来不少坑:gradle编译不通过,无法运行到小米手机上。。。
Android studio 更新到2.3版本,随之更新下来的gradle版本是3.2的,升级完之后一直处于Refreshing Gradle Project状态,因为android studio 2.3允许最低的gradle最低版本为3.3 。所以自己手动下载了gradle-3.3。离线包下载地址:http://services.gradle.org/distributions/grad原创 2017-03-20 14:22:26 · 1399 阅读 · 0 评论 -
activity生命周期及横竖屏切换
直接上结论:1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次2、设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次3、设置Activity的android:configChanges="原创 2017-02-13 13:47:42 · 569 阅读 · 0 评论 -
Android:判断手机是否安装了QQ或者微信
public static boolean isWeixinAvilible(Context context) { final PackageManager packageManager = context.getPackageManager();// 获取packagemanager List pinfo = packageManager.getInstalled原创 2017-01-22 10:36:37 · 3712 阅读 · 2 评论 -
关于EditText获取焦点,是否弹出软键盘的那些事
在开发过程中,当activity中包含edittext控件时,它会自动获取焦点,然后弹出软键盘,但我们有时不希望出现这种情况,所以只要不让edittext获取焦点即可。1、在布局中设置android:focusable="false" android:focusableInTouchMode="false" 也可以在edittext所在的父布局中进行拦截2、在Manifes原创 2016-12-29 10:25:11 · 1494 阅读 · 0 评论 -
Android系统设置---android.provider.Settings
调用Android系统项,可以用隐式意图去打开。//设置界面Intent intent=new Intent(Settings.ACTION_SETTINGS);startActivity(intent);常见的系统设置(android.provider.Settings) 常量值 对应的含义 ACTION_ACCESSIBILITY_SETTINGS 可访问性 ACTION_原创 2017-01-03 15:05:42 · 3548 阅读 · 0 评论 -
Android 版本更新下载自动安装APK,并解决Android6.0安装失败的问题
现在APP都有版本更新的功能,有的是跳转到浏览器进行下载,感觉比较麻烦,用户体验也不好,简便的方法就是直接下载安装即可。即使用Android自带的DownManager,通过启动一个后台服务进行下载,下载完成之后以广播的形式通知用户安装,方便很多。比较闹心的还是6.0权限的问题,下载安装需要一个路径,也就需要读写SD卡权限,不过发现一个问题就是:如果自己不定义一个路径,6.0手机下载完成之后,并没有原创 2016-11-21 15:03:14 · 15409 阅读 · 16 评论 -
Android ScrollView嵌套ListView只显示一行数据
public class MainActivity extends Activity { private ListView listView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceS转载 2016-07-29 21:01:26 · 1037 阅读 · 0 评论 -
Android之图片选择与裁剪
文章来自:点击打开链接对于现在的应用来说,基本都有用户模块,当然也就涉及到了用户头像的修改问题。修改头像我们一般采用两种方式:调用系统相机进行拍照或从图库中选择图片进行上传。但是由于Rom定制市场的混乱,导致了出现此问题在解决时需要重点考虑了兼容性,下面给出一种通用解决方案。启动相机进行拍照需要注意的是,Android系统为了防止传送原图出现OOM,拍照后默转载 2016-07-18 10:50:39 · 1219 阅读 · 0 评论 -
android sudio 如何获取sha1与md5值
转自于:http://www.bubuko.com/infodetail-1031689.html1、打开android studio 在最下面找到Terminal 如下图2、 输入命令 C: 进入c盘3、 输入命令 cd Users\Administrator 其中Administrator是自己的用户名 Administrator文件下有个.a转载 2016-07-02 15:35:03 · 432 阅读 · 0 评论 -
Android中五种Toast显示效果
1.默认效果:代码:Toast.makeText(getApplicationContext(), "默认Toast样式", Toast.LENGTH_SHORT).show();2.自定义显示位置效果:代码:toast = Toast.makeText(getApplicationContext(), "自定义位置T转载 2015-11-29 17:21:55 · 1318 阅读 · 0 评论 -
AndroidManifest.xml文件解析
一、关于AndroidManifest.xmlAndroidManifest.xml 是每个android程序中必须的文件。它位于整个项目的根目录,描述了package中暴露的组件(activities, services, 等等),他们各自的实现类,各种能被处理的数据和启动位置。 除了能声明程序中的Activities, ContentProviders, Services, 和Intent转载 2015-11-26 22:22:42 · 337 阅读 · 0 评论 -
Android开发中Android数据的四种存储方式
Android系统一共提供了四种数据存储方式。分别是:SharePreference、SQLite、Content Provider和File。由于Android系统中,数据基本都是私有的的,都是存放于“data/data/程序包名”目录下,所以要实现数据共 享,正确方式是使用Content Provider。 SQLite: SQLite是一个轻量级的数据库,支持基本SQL语法,是常被转载 2015-11-26 22:10:55 · 558 阅读 · 0 评论 -
Android之Handler用法总结
Android之Handler用法总结方法一:(java习惯,在android平台开发时这样是不行的,因为它违背了单线程模型)刚刚开始接触android线程编程的时候,习惯好像java一样,试图用下面的代码解决问题 new Thread( new Runnable() { public void run() { myView.i转载 2015-11-20 22:36:13 · 393 阅读 · 0 评论 -
Android 中消息模型的四大核心对象:Message、MessageQueue、Looper、Handler
一,相关概念在Android中如果通过用户界面(如button)来来启动线程,然后再线程中的执行代码将状态信息输出到用户界面(如文本框),这时候就会抛出以下的异常信息:5-12 13:33:04.393: ERROR/JavaBinder(1029):android.view.ViewRoot$CalledFromWrongThreadException:Onlythe origi转载 2015-11-20 23:37:06 · 634 阅读 · 0 评论 -
Android中关于Cursor类的用法
关于 Cursor在你理解和使用 Android Cursor 的时候你必须先知道关于 Cursor 的几件事情:Cursor 是每行的集合。使用 moveToFirst() 定位第一行。你必须知道每一列的名称。你必须知道每一列的数据类型。Cursor 是一个随机的数据源。所有的数据都是通过下标取得。关于 Cursor 的重要方法:close()转载 2015-11-17 23:34:14 · 737 阅读 · 0 评论 -
ActionBar介绍
setHomeButtonEnabled这个小于4.0版本是默认为true的。该方法的作用:决定左上角的图标是否可以点击。没有向左的小图标。 true 图标可以点击 false 不可以点击。actionBar.setDisplayHomeAsUpEnabled(true) // 给左上角图标的左边加上一个返回的图标 。对应ActionBar.DISPLAY_HOME_AS_UP转载 2015-11-17 23:24:08 · 407 阅读 · 0 评论 -
android中的style部分属性值介绍
Android平台定义的主题样式:android:theme="@android:style/Theme.Dialog" 将一个Activity显示为对话框模式•android:theme="@android:style/Theme.NoTitleBar" 不显示应用程序标题栏•android:theme="@android:style/Theme.NoTitleBar.转载 2015-11-15 22:58:34 · 345 阅读 · 0 评论 -
eclipse工具栏不显示sdk和adb图标?
1.确保你的android sdk安装正确2.点击window -> Customize Perspective -> Command Groups Availability(在上面) -> 勾选Android SDK and AVD Manager(在左面) 点击Ok原创 2015-11-14 20:14:11 · 1607 阅读 · 0 评论 -
用Eclipse编写Android程序的代码智能提示功能
1、打开eclipse工具,点击window菜单,选择preferences选项2、然后,选择Java->Editor->content assist 3、将Auto activation triggers for Java中的默认的一点替换为.abcdefghijklmnopqrstuvwxyz(,4、 Window->Preferences->XML->XML F原创 2015-08-18 20:47:42 · 590 阅读 · 0 评论 -
state框架详解
Android学习 StateMachine与State模式一 State模式意图: 允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。(Objects for States) 对象内部状态决定行为方式,对象状态改变行为方式改变;但这里为何要强调内部状态,外部状态改变也同样会影响行为方式的改变,通常外部状态的改变都会反映到内部状态上来。 Comm转载 2016-01-01 17:28:53 · 1046 阅读 · 0 评论 -
Openfire 的安装步骤和配置
3.在C:\Program Files\openfire\bin目录下有一个电灯泡的openfire.exe文件,双击执行,启动完成后可以看到4、 点击Launch Admin按钮进入http://127.0.0.1:9090/setup/index.jsp页面,配置openfire服务器 5、 选择语言 中文简体点击continue进入 6、 配置服务器域原创 2016-01-01 17:32:19 · 569 阅读 · 0 评论 -
this、getBasecontext和getApplicationContext区别
在一个普通的Android应用程序中,你通常有两种Context:Activity和Application。public class MyActivity extends Activity { public void method() { mContext = this; // since Activity extends Context m原创 2016-01-02 16:37:32 · 1027 阅读 · 0 评论