- 博客(201)
- 收藏
- 关注
原创 Android BLE 蓝牙通信库,2021大厂Android面试经历
}});如果扫描不出来,可将 targetSdk 调到低于 6.0.可以随时停止扫描:mClient.stopSearch();蓝牙开关打开关闭蓝牙:mClient.openBluetooth();mClient.closeBluetooth();判断蓝牙是否打开:mClient.isBluetoothOpened();蓝牙打开或关闭需要一段时间,可以注册回调监听状态,回调的参数如果是 true 表示蓝牙已打开,false 表示蓝牙关闭mClient.registerBluetoo
2021-12-20 11:15:49
730
原创 Android AsyncTask源码解析,深入理解Nginx
3. Result当任务执行完毕后,如果需要对结果进行返回,则使用这里指定的泛型作为返回值类型。因此,一个最简单的自定义AsyncTask就可以写成如下方式:[java] view plain copyclass DownloadTask extends AsyncTask<Void, Integer, Boolean> {……}这里我们把AsyncTask的第一个泛型参数指定为Void,表示在
2021-12-20 11:14:02
3365
原创 Android 7沉浸式下的朦层问题,android期末考试选择题
2.问题那么说到沉浸式状态栏的问题是什么呢?不知道大家有没有遇到过,应用在android7.0系统以下的手机上运行,沉浸式状态栏是正常的,但是在7.0以上的手机上运行就感觉没有沉浸式了,是分层的。无论怎么修改状态栏背景色都没用,看下图:图1是7.0以下运行效果,图2是7.0以上运行效果。看到上面两幅图,明显感觉到7.0系统做了处理,在状态栏上蒙了一层灰色背景。3.解决方法首先,先普及下知识:DecorView是整个Window界面的最顶层View,它只有一个子元素为LinearLayout
2021-12-20 11:10:26
408
原创 Android - AndroidStudio更改缓存目录,看这一篇就够了
这三个文件夹默认都是在C盘,想要将此移动到其它目录,请继续往下看。二、AndroidStudio缓存目录的配置。在我们将上述三个目录移动到指定的新目录下之后,需要做的就是重新配置这三项,使AndroidStudio到新目录读取我们的配置。1.关于.android文件夹的配置这个文件夹是由Android SDK配置生成的模拟器,也是最占空间的一个。首先,需要添加一个系统的环境变量ANDROID_SDK_HOME,路径是SDK的安装目录,如下图:添加好环境变量后到新的路径下修改下《Androi
2021-12-20 11:07:12
2746
原创 ALI Flutter进阶笔记,android开发应用实战详解
sdk: fluttercupertino_icons:^0.1.0english_words:^3.1.02.在Android Studio的编辑器视图中查看pubspec时,单击右上角的 Packages get,这会将依赖包安装到您的项目。您可以在控制台中看到以下内容:flutter packages getRunning "flutter packages get"in startup_namer…Process finished with exit code 03.在 lib/mai
2021-12-20 11:05:00
431
原创 Activity 的启动模式,kotlin协程android
<activityandroid:name=".StandardActivity"android:launchMode=“standard”android:taskAffinity=“task.test1” /><activityandroid:name=".SingleTopActivity"android:launchMode=“singleTop”android:taskAffinity=“task.test2” /><activityandroid:n
2021-12-20 10:59:29
1687
原创 Android 6,androidjni面试题
由于该方法是异步的,所以无返回值,当用户处理完授权操作时,会回调Activity或者Fragment的onRequestPermissionsResult()方法。对于Activity我们直接调用requestPermissions(int, String[])即可,不过这个方法是在api leve 23以上,所以我们为了适配可以是使用兼容包提供的方法:ActivityCompat.requestPermissions(activity, new String[]{Manifest.permissi.
2021-12-19 11:31:22
314
原创 Android 5,深入浅出
See the License for the specific language governing permissions andlimitations under the License.*/package com.android.gallery3d.data;import android.net.Uri;public abstract class MediaObject {@SuppressWarnings(“unused”)private static final Str..
2021-12-19 11:29:40
327
原创 Android 3年外包工面试笔记,有机会还是要去大厂学习提升
面试官看起来比较成熟,但也大不过我几岁,问的问题大概是基础内容,下面回忆整理下:网络方面tcp/ip 三次握手过程udp理解多线程是否自己实现过/如何避免线程死锁等问题基础方面Android四大组件一一介绍activity 生命周期以及每个周期的使用场景service的起动方式以及区别和各自的使用场景broadcast注册方式及为什么会有这两种方式各自存在的意义及使用场景是什么contentprovider理解,能做什么。项目方面2D绘图原
2021-12-19 11:28:07
638
原创 Android 2020-2021年 最新面试题(附个人面试经历),android应用开发入门教程(经典版)
此处延伸:栈(First In Last Out)与队列(First In First Out)的区别**3.Service的两种启动方式 **(1)startService(),(2)bindService()http://www.jianshu.com/p/2fb6eb14fdec4.Broadcast注册方式与区别(1)静态注册(minifest),(2)动态注册http://www.jianshu.com/p/ea5e233d9f43此处延伸:什么情况下用动态注册5.HttpClie
2021-12-19 11:25:55
166
原创 Android 11适配指南之Toast解析,应聘高级Android工程师历程感言
View v = inflate.inflate(com.android.internal.R.layout.transient_notification, null);引用了一个布局来显示信息这个layout也非常的简单:<LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android”android:layout_width=“match_parent”android:layout_height=“match_
2021-12-19 11:24:03
709
原创 Andorid Studio 制作欢乐写数字(Timer启动+帧动画,阿里P8成长路线
//继承dialog代码如下:public class mCustomProgressDialog extends ProgressDialog{private AnimationDrawable mAnimation; //设置对话框的动画资源private Context mContext;private ImageView mImageView;private String mLoadingTip; //设置对话框文字private TextView mLoading
2021-12-19 11:21:59
416
原创 @Android程序员:到底是Android不行了,kotlin实例化
Handler 相关知识1、Handler Looper Message 关系是什么?2、Messagequeue 的数据结构是什么?为什么要用这个数 据结构?3、如何在子线程中创建 Handler?4、Handler post 方法原理?…Activity 相关1、启动模式以及使用场景?2、onNewIntent()和 onConfigurationChanged()3、onSaveInstanceState()和 onRestoreInstanceState()4、Activ
2021-12-19 11:20:25
524
原创 Android HTTP通信基础,android驱动开发书籍
二、URLhttp://blog.youkuaiyun.com(:80)/zhoumushuihttp:// 表示要通过HTTP协议来定位网络资源blog.youkuaiyun.com 表示主机域名:80 表示端口zhoumushui  
2021-12-18 10:19:28
125
原创 Android DataBinding 从入门到进阶,Android开发入门与实战
private ActivityMain3Binding activityMain3Binding;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main3);activityMain3Binding = DataBindingUtil.setContentView(this, R.lay
2021-12-18 10:15:44
260
原创 Android DataBinding 从入门到进阶(1),h5移动端开发适配
<TextView···android:text="@{goods.name}" /><TextView···android:text="@{goods.details}" /><TextView···android:text="@{String.valueOf(goods.price)}" /><Button···android:onClick="@{()->goodsHandler.changeGoodsName()}"androi
2021-12-18 10:14:06
576
原创 Android AsyncTask原理解析,android开发网
首先先从AsyncTask的构造函数说起:/AsyncTask的构造函数源码片段/public AsyncTask() {mWorker = new WorkerRunnable<Params, Result>() {public Result call() throws Exception {mTaskInvoked.set(true);Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);Result res
2021-12-18 10:12:25
178
原创 Android aab打包报错(持续更新中~),2021我是如何拿到小米、京东、字节的offer
直接跑debug包没问题,打APK包也正常,问题来了打aab包就报错:Cause: jarsigner.exefailed with exit code 1 :����: �Ҳ��������������� sun.security.tools.jarsigner.Main「Build output乱码问题后面讲到」,咱一个个解决,先看打包问题解决方案升级Gradle插件版本:4.2.0升级Gradle所需
2021-12-18 10:08:39
401
原创 Android 8,Android开发经典实战
/**判断是否是8.0,8.0需要处理未知应用来源权限问题,否则直接安装*/private void checkIsAndroidO() {if (Build.VERSION.SDK_INT >= 26) {boolean b = getPackageManager().canRequestPackageInstalls();if (b) {installApk();//安装应用的逻辑(写自己的就可以)} else {//请求安装未知应用来源的权限ActivityCompat.
2021-12-18 10:06:48
345
原创 Android 7沉浸式下的朦层问题,flutter瀑布流效果
首先,先普及下知识:DecorView是整个Window界面的最顶层View,它只有一个子元素为LinearLayout。代表整个Window界面,包含通知栏,标题栏,内容显示栏三块区域。DecorView这个大家应该很熟悉,通过getWindow().getDecorView()就可以得到此对象,在6.0以上,我们可以通过以下方式设置状态栏字体变黑:getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT.
2021-12-18 10:04:44
207
原创 Android 12开发者预览版现已发布,包含众多亮点,Android码农是如何进入腾讯的
Android 12 将支持空间音频与MPEG-H,并为高达24个音频通道进行了优化(之前仅有8个)。它还将使开发者更容易将「隆隆声」效果与音频联系起来。谷歌似乎正在将注意力放在AV1图像文件格式(也称为AVIF)后面。AVIF旨在将JPG替换为事实上的图像格式,以更少的伪像提供更好,更干净的压缩。Netflix特别是这种格式的大力支持者。如果说AV1听起来很熟悉,那是因为这是几年前主要技术公司提出的AV1视频格式的分支,而Netflix和谷歌都已部分采用。AVIF也不要与类似的HEIF混淆,后者已经被苹
2021-12-18 10:03:10
463
原创 Android UI-自定义日历控件,写给1-3年安卓程序员的几点建议
public int i;public int j;public Cell(CustomDate date, State state, int i, int j) {super();this.date = date;this.state = state;this.i = i;this.j = j;}public void drawSelf(Canvas canvas) {switch (state) {case TODAY: // 今天mTextPaint.setColor(Colo
2021-12-17 13:39:59
236
原创 Android UI-SlidingMenu侧滑菜单效果,原理+实战讲解
}if (mContent == null) {mContent = new TodayFragment();}// 设置左侧滑动菜单setBehindContentView(R.layout.menu_frame_left);getSupportFragmentManager().beginTransaction().replace(R.id.menu_frame, new LeftFragment()).commit();// 实例化滑动菜单对象SlidingMenu sm = get
2021-12-17 13:38:12
225
原创 Android Studio 制作简易计算器,2021最新网易Android面经
android:orientation=“vertical”tools:context=".MainActivity"<EditTextandroid:id="@+id/et_input"android:layout_width=“fill_parent”android:layout_height=“90dp”android:background="@drawable/white_bg"android:editable=“false”android:gravity=“right|bo
2021-12-17 13:36:13
496
原创 android SharedPreferences 手机保存数据的简单方法,看这里
/**得到保存数据的方法,我们根据默认值得到保存的数据的具体类型,然后调用相对于的方法获取值@param context@param key@param defaultObject@return*/public static Object get(Context context, String key, Object defaultObject) {SharedPreferences sp = MyApplication.sp;if (defaultObject
2021-12-17 13:34:36
167
原创 Android Q新特性,一起来学习折叠屏应该如何适配,flutter二维码扫描插件
Android 8.0 或以上版本在 标签中配置 android:maxAspectRatio:<activity android:name=".MainActivity"android:maxAspectRatio=“2.4” />Android 8.0 以下版本在 标签中添加名为 android.max_aspect 的 meta-data: 如果 resizeableActivity 设为 true,就不需要设置 maxAspectRatio 了,设了也不会生效。
2021-12-17 13:32:54
960
原创 android phonegap插件开发方法 plugin,掌握这个提升路径,
{“file”: “plugins/org.apache.cordova.camera/www/CameraPopoverOptions.js”,“id”: “org.apache.cordova.camera.CameraPopoverOptions”,“clobbers”: [“CameraPopoverOptions”]},{“file”: “plugins/org.apache.cordova.camera/www/Camera.js”,“id”: “org.apache.cord
2021-12-17 13:31:21
117
原创 Android ORM 框架 GreenDao 使用详解,移动互联网开发技术专业
this.info = info;this.type = type;}@Generated(hash = 971639536)public GoodsModel() {}public static final Creator CREATOR = new Creator() {@Overridepublic GoodsModel createFromParcel(Parcel in) {return new GoodsModel(in);}@Overridepublic GoodsMo
2021-12-17 13:27:17
203
原创 Android MVP模式深入实践探索(一),我浪费了自己职业生涯的黄金5年
说起MVP就不得不提起MVC, 因为MVP的是在MVC的基础上优化而来的:MVC角色说明:| 角色 | 职责 || :-- | :-- || View | 视图界面层,与用户发生交互,接收用户输入的请求转发给Controller处理 || Controller | 接收View的请求, 从视图层获取数据,执行业务逻辑,并调用Model层进行数据存取 || Model | 执行数据存取的业务逻辑,并根据业务模型通知视图层更新(一般是通过观察者模式) |MVP角色说明:| 角色 | 职责 |
2021-12-17 13:25:13
114
原创 Android Kotlin Jetpack Compose UI框架 完全解析,2021Android大厂面试题来袭
可以在AndroidStudio内查看、检查或播放动画,还可以逐针播放。1.1.3 布局检查器Android Studio Arctic Fox 增加了布局监测器对Compose的支持,可以分析Compose组件的层级。如下所示:1.1.4 交互式预览在此模式下,你可以与界面组件互动、点击组件,以及查看状态如何变化。通过这种方式,你可以快速获得有关界面如何反应的反馈,并可快速预览动画。如要启用此模式,只需点击“互动”图标 ,系统即会切换预览模式。![89074-iw717wisn5b.png]
2021-12-17 13:23:39
1263
原创 Android Framework学习笔记(十)Content Provider启动过程
Cursor cursor = this.getContentResolver().query(mCurrentURI, null, null, null, null); //1showlog(“count=” + cursor.getCount());cursor.moveToFirst();while (!cursor.isAfterLast()) {String table = cursor.getString(cursor.getColumnIndex(“table_name”));St
2021-12-16 11:28:58
173
原创 Android Framework原理,android开发技术
启动Home Activity在systemReady状态,ActivityManagerService会与zygote的Socket通信,请求启动Homezygote收到AMS的连接请求后,执行runSelectLoopMode处理请求zygote处理请求会通过forkAndSpecialize启动新的应用进程,并最终启动Home概况系统加电,执行bootloader。Bootloader负责初始化软件运行的最小硬件环境,最后加载内核到内存内核加载到内存后,进入内核引导
2021-12-16 11:27:12
232
原创 Android 8,android基础知识总结
public class RemoteService extends Service {private static final String TAG = “RemoteService”;@Overridepublic void onCreate() {super.onCreate();Log.e(TAG, “onCreate: 创建 RemoteService”);bindLocalService();}@Overridepublic IBinder onBind(Intent inte
2021-12-16 11:23:36
105
原创 Android 10(Q)_11(R) 分区存储适配,flutter教程app
3. 新增权限MANAGE_EXTERNAL_STORAGE : 类似以前的 READ_EXTERNAL_STORAGE + WRITE_EXTERNAL_STORAGE ,除了应用专有目录都可以访问。应用可通过执行以下操作向用户请求名为所有文件访问权限的特殊应用访问权限:在清单中声明 MANAGE_EXTERNAL_STORAGE 权限。使用 ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION intent 操作将用户引导至一个系统设置页面,在该页面上,用户可以为
2021-12-16 11:21:55
673
原创 Android 10(Q)_11(R) 分区存储适配(1),腾讯&字节&爱奇艺&网易&华为实习面试汇总
2. 使用直接文件路径和原生库访问文件为了帮助您的应用更顺畅地使用第三方媒体库,Android 11 允许您使用除 MediaStore API 之外的 API 访问共享存储空间中的媒体文件。不过,您也可以转而选择使用以下任一 API 直接访问媒体文件:File API。原生库,例如 fopen()。简单来说就是,可以通过 File() 等API 访问有权限访问的媒体集了。性能:通过 File () 等直接通过路径访问的 API 实际上也会映射为MediaStore API 。按文件路径顺
2021-12-16 11:20:22
700
原创 Android 10 适配及具体解决办法,一文详解
Android Id:kotlin:val androidId = Settings.Secure.getString(context.contentResolver,Settings.Secure.ANDROID_ID)java:String androidId = Settings.Secure.getString(context.contentResolver,Settings.Secure.ANDROID_ID);但是在实际应用中发现, 有Android Id获取失败的情.
2021-12-16 11:16:18
1828
原创 Android 118道基础面试题,面试途中不卡题,sharedpreferences线程安全
27、json解析方式的两种区别?28、线程池的相关知识。29、内存泄露,怎样查找,怎么产生的内存泄露?30、类的初始化顺序依次是?31、JSON的结构?32、ViewPager使用细节,如何设置成每次只初始化当前的Fragment,其他的不初始化(提示:Fragment懒加载)?33、Android为什么引入Parcelable?34、有没有尝试简化Parcelable的使用?35、Bitmap 使用时候注意什么?36、Oom 是《Android学习笔记总结+最新移动架构视频+大厂
2021-12-15 10:09:09
445
原创 Activity快速转换为Diglog,美团点评APP在移动网络性能优化的实践
0.4false边用边更新/**判断qq是否可用@param context@return*/public static boolean isQQClientAvailable(Context context) {try {final PackageManager packageManager = context.getPackageManager();List pinfo = packageManager.getInstalledPackages(0);if (
2021-12-15 10:03:46
146
原创 985本3Android程序员40天拿下阿里P6口头offer,面试成功后整理了这些面试思路
volley的源代码,在图片缓存部分讨论了挺长时间,http中缓存机制,Last-Modify的作用等;fragment的生命周期 ;service一些知识 ;事件分发机制 ;Binder实现机制,Stub类中asInterface函数作用,BnBinder和BpBinder区别;gradle中buildToolsVersion和TargetSdkVersion的区别是什么;手机适配一些方案 ;hashmap的实现原理 ;静态方法是否能被重写;这些大..
2021-12-15 10:00:32
357
原创 8年老Android开发谈;简化UI都没弄明白凭什么拿高薪?,阿里Android面试必问
缺少对 styles 的支持,缺少对变量的支持,不支持宏和计算结果(例如 10dp + 2px)没有数据绑定,这使得你必须自己把所有的 findViewById 和 setOn…Listener 写好你可以通过 Java 实现你的布局,但是写出来的代码有如天书使用 mithril.js 建立用户接口在 Web 开发中,开发者们很快就意识到在没有 MVx 的情况下开发复杂的应用会很吃力,这使得他们意识到 jQuery 中存在的问题,并开发了 Backbone,Knockout,Angu..
2021-12-15 09:58:20
125
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人