自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(169)
  • 收藏
  • 关注

原创 Android App Bundle 已取代 APK,android高德地图开发

下表列出了功能模块支持的不同分发选项,以及如何使用这些选项优化示例购物平台应用的初始下载大小。| 分发选项 | 行为 | 示例用例 | 使用入门 || — | — | — | — || 安装时分发 | 默认情况下,未配置上述任何分发选项的功能模块会在安装应用时下载。这是一种重要的行为方式,有助于您逐步采用更高级的功能分发选项。例如,只有在使用 Google Play Core 库完全实现按需下载机制之后,您才能受益于应用功能的模块化,并启用按需分发功能。此外,您的应用可以在之后请求卸载功能。因此,如

2021-12-31 10:27:15 389

原创 Android ANR:Application Not Responding详解,2021年Android开发陷入饱和

ANR,全称为Application Not Responding,也就是应用程序无响应。如果 Android 应用的界面线程处于阻塞状态的时间过长,就会触发“应用无响应”(ANR) 的错误。此时系统会向用户显示一个对话框,ANR 对话框会为用户提供强行退出应用的选项。二、ANR的四种类型在Android系统中,应用程序的响应由Activity Manager及Window Manager两个系统服务所监控。通常情况下,应用出现如下四类情况时,系统将报ANR:KeyDispatchTimeout(

2021-12-31 10:26:11 488

原创 Android 7,apk瘦身工具

type catlog, domain;type catlog_exec, exec_type, file_type;allow init catlog_exec:file { execute getattr read open };allow init catlog:process { transition };allow init catlog:process { rlimitinh siginh noatsecure };allow catlog kernel:system { syslog

2021-12-31 10:25:03 557

原创 Android 7(1),android游戏开发大全

allow catlog proc:file { write open read };allow catlog tmpfs:lnk_file { read };allow catlog storage_file:dir { search };allow catlog storage_file:lnk_file { read };allow catlog mnt_user_file:dir { search };allow catlog mnt_user_file:lnk_file { read }

2021-12-31 10:23:43 315

原创 Android 12 行为变更,对应用产生的影响,2021腾讯Android面试题精选

因为添加了 intent-filter 所以 android:exported 的属性的默认值为 true,因此可以接受来自其他 App 的访问,进而造成了上述问题(通过 Twicca App 将存储在 SD 卡上的图片或电影上传到 Twicca 用户的 Twitter 账户上的社交网络上),而解决方案有两个:方案一:添加 android:exported="false" 属性 方案二: Twicca App 没有使用方式一,而是检查调用...

2021-12-31 10:22:20 1080

原创 Android 12 启动画面-SplashScreen,面试看这个就够了

默认情况下,使用启动图标。???? 启动画面的工作原理============当用户启动应用而应用的进程未在运行(冷启动)或 Activity 尚未创建(温启动)时,会发生以下事件。(在热启动期间从不显示启动画面。)系统使用主题以及您已定义的任何动画显示启动画面。当应用准备就绪时,会关闭启动画面并显示应用。关于应用启动模式可以参考:Android 性能优化之启动优化。???? 动画的元素和机制===========动画的元素由 Android 清单中的 XML 资源文件定义。

2021-12-31 10:21:16 4420

原创 Android 10 申请动态权限以后仍然无法读写文件的解决方案

仍然以targetSdkVersion 为 29,但是可在AndroidManifest.xml中application标签添加 android:requestLegacyExternalStorage="true",这样也可以,但是注意compileVersion也必须同时为 29 :android {compileSdkVersion 29buildToolsVersion “29.0.3”defaultConfig {applicationId “com.android.test.lib.

2021-12-31 10:20:18 1504

原创 Android - 获取系统时间和网络时间,androidtv开发教程

<TextViewandroid:id="@+id/tv_nettime"android:layout_width=“match_parent”android:layout_height=“wrap_content”android:gravity=“center”android:text=“Hello World!”android:textSize=“22sp” /><Buttonandroid:id="@+id/btn_nettime"android:layout_wi

2021-12-31 10:19:22 1044

原创 Android - 版本控制软件,集中式与分布式,SVN提交规范

VisualSVN是一款图形化s《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整资料开源分享vn服务器。官网http://www.visualsvn.com/server/下载地址:http://www.visualsvn.com/server/download/搭建svn服务器,安装步骤见文档3. SVN使用步骤checkOut:把服务器的仓库下载到本地在仓库中编

2021-12-31 10:18:20 106

原创 Android 标签栏pagerslidingtabstrip用法实例(含Demo)

if (locale == null) {locale = getResources().getConfiguration().locale;}}public void setViewPager(ViewPager pager) {this.pager = pager;if (pager.getAdapter() == null) {throw new IllegalStateException(“ViewPager does not have adapter instance.”);}

2021-12-30 12:12:28 88

原创 Android 本地网络小说爬虫,基于 jsoup 及 xpath,Android入门教程

项目地址:smuyyh/CrawlerForReader 简介:Android 本地网络小说爬虫,基于 jsoup 及 xpath更多:作者   提 Bug标签:Android 本地网络小说爬虫,基于 jsoup 与 xpath,通过模版解析网页。支持书源模版示例调用方式ScreenShot支持书源/**所有书源*/public static final SparseArray SOURCES = new Spar.

2021-12-30 12:11:32 2758

原创 Android 性能优化—— 启动优化提升60,安卓事件分发机制图解

创建应用程序进程。一旦系统创建应用程序进程,应用程序进程就会负责下一阶段。这些阶段是:创建app对象.启动主线程(main thread).创建应用入口的Activity对象.填充加载布局Views在屏幕上执行View的绘制过程.measure -> layout -> draw应用程序进程完成第一次绘制后,系统进程会交换当前显示的背景窗口,将其替换为主活动。此时,用户可以开始使用该应用程序。因为App应用进程的创建过程是由手机的软硬件决定.

2021-12-30 12:10:37 160

原创 Android 开发艺术探索笔记(7),android短视频开发

Socket又称为套接字,分为流式套接字和用户数据包套接字两种,分别对应网络的传输控制层的TCP和UDP协议。接下来来设计一个聊天室实现Socket进行IPC通信。用远程Service来建立一个TCP服务,在主界面来连接这个TCP,然后在客户端发消息给服务端,服务端都会随机回复一句话。我们在服务端做一些处理来实现其能和多个客户端同时建立连接并响应。先要声明权限:这里是服务端的设计。当Service启动的时候,会在线程中建立TCP服务,这里监听的是8688端口,当有客户连接的时候就建立一个Socke

2021-12-30 12:09:42 102

原创 Android 布局异步加载中的pools对象缓存池源码分析,音视频时代你还不会NDK开发

来源官方class上面的的使用介绍,recycle(),这里可以对实例对象进行清洁,意思是初始化里面的字段,也可以不清洁,看需求吧。AsyncLayoutInflater实例对象缓存中的就做了初始化,再缓存实例对象,代码如下:public void releaseRequest(InflateRequest obj) {//重置一下实例对象obj.callback = null;obj.inflater = null;obj.parent = null;obj.resid = 0;obj.vi

2021-12-30 12:08:47 293

原创 Android 封装对话框工具类,系列教学

public void bt2(View v) {// 这里的属性可以一直设置,因为每次设置后返回的是一个builder对象AlertDialog.Builder builder = new AlertDialog.Builder(this);// 设置提示框的标题builder.setTitle(“提示标题”).// 设置提示框的图标setIcon(R.drawable.ic_launcher).// 设置要显示的信息setMessage(“文本的提示信息:你妈喊你回家吃饭了!”).//

2021-12-30 12:07:52 728

原创 Android 实现搜索历史(2),android面试题选择题

for (int i = 0; i < childCount; i++) {View child = getChildAt(i);MarginLayoutParams lp = (MarginLayoutParams) child.getLayoutParams();int childWidth = child.getMeasuredWidth();int childHeight = child.getMeasuredHeight();//如果需要换行if (childWidth + li

2021-12-30 12:06:56 145

原创 Android 学习路线,2021最新爱奇艺Android社招面试题目

图的BFS、DFS、prim、Dijkstra算法(高阶技能)经典问题:海量数据的处理 (10亿个数中找出最大的10000个数 TOP K问题)算法分治算法动态规划贪心算法分支限界法Android基础Application生命周期Android Activity生命周期Android Service、IntentService,Service和组件间通信Activity的onNewIntentFragment的懒加载实现,参数传递..

2021-12-30 12:06:01 225

原创 Android 学习路线(1),带你一步一步深入Handler源码

ThreadLocal的原理和用法ThreadPool的用法和示例wait()和sleep()的区别Java高阶Java虚拟机,Java运行,Java GC机制(可达性分析法,引用计数法)Java对象的完整生命周期JVM内存模型进程间通信,线程间通信JVM类加载机制Java引用类型设计模式:除常用设计模式之外,特别的,反射机制,代理模式HTTP协议和HTTPS协议Socket协议,Socket实现长连接TCP和UDP协议..

2021-12-30 12:05:06 958

原创 Android 如何从应用深入到Framework (一),移动混合开发技术

Android 启动过程框架跟linux如出一辙,所以很容易迁移过来,同时,差异化的init进程,完成初始任务,创建安卓世界的孵化器,既然这里要进入安卓世界,而安卓世界的基础语言是java,那么就需要一个Java虚拟机,于是孵化器就要构造一个虚拟机,用来解析执行Java编译出来的字节流。而孵化器本身是由c cpp语言实现,于是Java虚拟机就是由c cpp语言写出来的,linux操作系统也是c(还有一些汇编)写出来的,于是Java虚拟机运行的Java语言,就需要跟c cpp打交道,于是就有了JNI。孵化

2021-12-30 12:04:10 102

原创 Android 仿小红书自定义展开 收起的TextView,终获offer

}使用之前,稍微了解一下方法中参数的作用,以下是比较全的参数说明CharSequence source:需要分行的字符串int bufstart:需要分行的字符串从第几个位置开始int bufend:需要分行的字符串到哪里结束TextPaint paint:画笔对象int outerwidth:layout的宽度,字符超出宽度时自动换行,也就是内容要显示的宽度Alignment align:对齐方式,有 ALIGN_CENTER、ALIGN_NORMAL、ALIGN_O

2021-12-29 13:11:02 539

原创 Android 之 Metadata简析,android底层开发入门

对资源的引用,如“@string/app_name”。该资源ID可以通过该metaData.getInt()方法获取 。android:value分配给该标签的值,如String、Boolean等。Metadata具体用法在AndroidMainfest.xml中:<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android=“http://schemas.android.com/apk/res/androi.

2021-12-29 13:09:54 557

原创 Android 中的“后台无效动画,聊聊 Android 开发的现状和思考

抓取了 QQ 音乐的后台动画时候的 MethodTrace 发现,也是由于退到后台之后,没有暂停动画导致的,也是 Airbnb 的 Lottie 的锅, 而且 QQ 音乐有三个动画没有停止,比网易新闻还要严重一些放大后可以看到当然也不是每一个都是 airbnb 的 Lottie 动画库引起的,比如下面这个,就是普通的动画没有结束根本原因根本原因是应用在不可见之后,没有将动画暂停,导致应用切换到后台之后,依然在刷新动画的回调,但此时由于是不可见的,不会触

2021-12-29 13:08:33 189

原创 Android VideoPlayer,安卓开发面试

mContext.sendBroadcast(i);if (mediaPlayer != null) {mediaPlayer.reset();mediaPlayer.release();mediaPlayer = null;}try {mediaPlayer = new MediaPlayer();mediaPlayer.setOnPreparedListener(mPreparedListener);mediaPlayer.setOnVideoSizeChangedListener(m

2021-12-29 13:06:06 276

原创 Android UI- PullToRrefresh自定义下拉刷新动画,androidstudio开发环境配置

@Overrideprotected int getDefaultDrawableResId() {return R.drawable.loading1;}@Overrideprotected void onLoadingDrawableSet(Drawable imageDrawable) {// NO-OP}@Overrideprotected void onPullImpl(float scaleOfLayout) {// NO-OP}// 下拉以刷新@Overridepr

2021-12-29 13:05:07 101

原创 Android studio数据如何发送IIS服务器保存SQL Server 2014数据库

1.2 MainActivity.java中,输入姓名,选择手机一个图片…public void BtnEnd(View view){if (bitmap != null && !name.getText().toString().equals("")){UploadUtil.mBitmap = bitmap;//获取手机图片UploadUtil.mName(name.getText().toString());//姓名}}…1.3 UploadUtil.java中,把姓名

2021-12-29 13:04:11 527

原创 Android Studio上Kotlin的入门,android插件化和组件化

//改写前fun sum(parm1: Int, parm2: Int): Int {return a + b}//改写后fun sum(parm1: Int, parm2: Int) = a + b //返回值类似也省略了,由编译器自动推断类型匿名函数Kotlin支持lambda表达式。并非每个函数都需要一个名称。某些函数通过输入和输出更直接地进行标识。这些函数称为“匿名函数”。lambda表达式的写法为:(type1,type*) -> type_return = { }使

2021-12-29 13:03:09 331

原创 Android targetSdkVersion 升级到 26 总结,android入门零基础

遇到的问题,解决问题查看官方文档因为公司的 App、组件、模块都是基于 target 22 和 support 24 进行开发的,所以要看下官方文档 releases/platforms 和 libraries/support-library 相关的文档,从中找到影响点。我们受影响主要有 2 个方面:一、运行时权限申请,(这个是大头)二、其他问题找轮子因为第一个权限问题是比较普遍的,所以应该有相关的开源项目支持,为了效率,我们就不重复制造轮子。参考各个比较流行的开源方案,做了一下.

2021-12-28 11:46:59 265

原创 Android Studio自定义模板,作为一个Android程序员你还不会JetPack

<parameterid=“packageName”name=“Package name”type=“string”constraints=“package”default=“com.mycompany.myapp” />template_welcome_activity.png这里的配置和名称都是由template中进行配置的thumb表示as显示的图片注意:<parameterid=“parentActivityClass”name=“Hierarch

2021-12-28 11:45:55 130

原创 Android Studio自定义模板(1),android屏幕适配五种方式

<parameterid=“activityClass”name=“Activity Name”type=“string”constraints=“class|unique|nonempty”default=“WelcomeActivity”help=“The name of the activity class to create” /><parameterid=“layoutName”name=“Layout Name”type=“string”constrain

2021-12-28 11:44:47 397

原创 Android Studio模拟器(AVD)安装,android实战开发-天气预报PPT

2、添加设备已有模拟器显示界面如下,没有直接选中+Create Virtual Device…3、选择设备选中你想要的设备Next>Next>Finish即可4、Error while waiting for device: The emulator process for AVD Pixel_2_API_28 was killed.问题造成原因:1.Android Emulater没有安装2.HAXM需要更新或重新安装下面咱看看那个没安装File>Sett

2021-12-28 11:43:27 530

原创 Android Studio安装及问题解决,GitHub上标星13k的《Android面试突击版》

链接:https://pan.baidu.com/s/1yDUmyCYHo9kuFONTm4hlUw 提取码:ipnr安装注意安装路径,尽量不要装到C盘?安装完毕之后启动?点击cancel?模式自己选一个就行?这里,安装SDK(软件开发工具包),也是注意一下路径就好?,都选上就行了!安装结束后点击start?到这里,等一会,无论你是能打开还是卡住,下面要做的就是开始安装Gradle了。先去找到 .gradle 的文件夹,一般默认在C盘,C:\Users…你自己的

2021-12-28 11:42:04 103

原创 Android Studio中统一管理版本号引用配置,Android面试必问

}**4.**在app目录下的build.gradle中使用dependencies {compile fileTree(include: [’*.jar’], dir: ‘libs’)compile “com.android.support:cardview-v7:${APPCOMPAT_VERSION}”compile “com.android.support:appcompat-v7:${APPCOMPAT_VERSION}”compile “com.android.support:des

2021-12-28 11:41:00 332

原创 Android Studio中的 Image Asset Studio(图标生成工具)

Vector Asset Studio使用:Notification icons通知是你可以在应用程序的正常 UI 之外向用户显示的消息。Image Asset Studio 将通知图标放置在目录中的适当位置 :res/drawable-density/Android 2.2(API 级别 8)及更低版本的图标放置在目录中。res/drawable-density/Android 2.3 到 2.3.7(API 级别 9 到 10)的图标放置在 目录中。res/drawable-den

2021-12-28 11:40:02 956

原创 Android Studio 模拟器卡慢、占内存解决方法,上岸蚂蚁金服

创建新的 AVD 官方链接:https://developer.android.google.cn/studio/run/managing-avds#createavd.在 AVD 管理器中创建 Android 虚拟设备 (AVD) 时,你可以指定模拟器应使用硬件还是软件来模拟 AVD 的 GPU。Graphics Rendering即图形渲染方式,如下有三种可选:自动选择、硬件、软件。右侧标注处解释了其优缺点:硬件:使用你电脑的显卡得到更快的渲染。软件:使用电脑中的软件来模拟图形,以此解决电脑显

2021-12-28 11:39:06 1894

原创 Android 代码混淆 混淆方案,熬了整整30天

这行代码定义了混淆规则由两部分构成:位于 SDK 的 tools/proguard/ 文件夹中的 proguard-android.txt 的内容以及默认放置于模块根目录的 proguard-rules.pro 的内容。前者是 SDK 提供的默认混淆文件,后者是开发者自定义混淆规则的地方。常见的混淆指令=======optimizationpassesdontoptimizedontusemixedcaseclassnamesdontskipnonpubliclibrarycla

2021-12-27 11:24:17 856

原创 Android 代码优化:“这个需求很简单,移动开发工程师的岗位职责

before:在我们APP启动过程,我们可能常常有这样的需求:在APP第一次进入的时候根据网络请求的结果弹一个对话框式的广告, ok~ 很简单,那么代码大致就是这样(这边都是伪代码,为了方便理解):@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {checkFirstDialogIfNeed《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》【docs.qq.com/do

2021-12-27 11:22:57 69

原创 Android ViewGroup介绍+实例,androidndk开发pdf

int width = 0;int height = 0;//记录每一行的宽度,width不断取最大宽度int lineWidth = 0;//每一行的高度,累加至heightint lineHeight = 0;int count = getChildCount();int left = getPaddingLef

2021-12-27 11:21:34 74

原创 Android UI-实现底部切换标签(fragment),Android开发视频教程

<Viewandroid:id="@+id/line"android:layout_width=“match_parent”android:layout_height=“1dp”android:layout_above="@id/ll_bottom_tab"android:background="@color/line" />以上是布局代码,下面就介绍如何通过点击标签切换Fragment:我们会发现,初始的时候是选中第一个标签页,图片和字体的颜色区别于另外两《Android

2021-12-27 11:20:29 166

原创 android Studio Git命令--解决冲突和产看提交内容,android输入法开发软键盘切换

显示Samplecommit6305aa81a265f9316b606d3564521c43f0d6c9a3Author:XXXDate:   Thu Nov 3 11:38:15 2011 +0800fillauthor information in the head of files and format some codediff–git a/Site/accounts/decorators.pyb/Site/accounts/decorators.py

2021-12-27 11:17:33 214

原创 Android Studio 4,Android开发入门与实战

接下来我会依据 Android Dev Summit 分享的内容以及自己的理解,为大家介绍 Android Studio 4.0 的最新进展,没关注的小伙伴记得关注鸭!如果觉得这些文章有点意思,记得分享转发评论点赞鸭!编译构建方面========================================================================新的 Build 窗口,在每一次 Build 之后,会出现一个新的 Build Speed 窗口,我们可以在这个窗口里面查看在整个

2021-12-27 11:16:26 343

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除