自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android - LayoutParams,小火箭,高内聚低耦合,rxjava原理面试

}//将返回值设置为true,才能一直接收到事件return true;}});3.WindowManager.LayoutParams1.params.x和params.yView的X坐标和Y坐标2.params.gravityGravity.TOP //上对齐Gravity.BOTTOM //下对齐Gravity.LEFT //左对齐Gravity.RIGHT //

2022-03-02 19:03:37 415

原创 Activity页面的绘制流程,移动app开发公司

……ViewRootImpl root;View panelParentView = null;……1.创建ViewRootImpl对象root = new ViewRootImpl(view.getContext(), display);view.setLayoutParams(wparams);mViews.add(view);mRoots.add(root);mParams.add(wparams);// do this last because it fires off me

2022-03-02 18:59:22 619

原创 Activity显示界面——说说View的那些理不清的关系,总结2021年180道Android岗面试题

小爱是怎么诞生的呢?熟悉Activity启动流程的都知道,小爱的创建发生在performLaunchActivity中://ActivityThread.javaprivate Activity performLaunchActivity(ActivityClientRecord r, Intent customIntent) {//创建ContextImplContextImpl appContext = createBaseContextForActivity®;Activity activi

2022-03-02 18:56:31 331

原创 7年老Android收到阿里offer,跟领导提离职被怼:为年薪百万不做兄弟

我自己或许也算是个成功的例子,在4年的时间里从1-1做到了2-2,当然,这背后的“辛酸泪”就留到日后再说。总的来说,归功于自己不断地学习,复盘总结,提升技术!就快要到“金三银四”面试季了,给大家分享一份**《Android开发2020年度面试真题合集》**该面试宝典不仅收录了本人亲身面试遇到的问题,还收录了从一些朋友那里收集过来的问题。在以后的工作中本 人也会不断的更新和充实该面试宝典,当然也希望大家能够多多奉献比较优质的面试题。不仅展示了常见的面试问题以及回答技巧,还详细讲解了每一道题所包含的知识点

2022-03-02 18:52:16 391

原创 android 使用xstream解析xml,flutter跳转第三方应用

public List getLink() {return link;}public void setLink(List link) {this.link = link;}@XStreamAlias(“reported_devices”)public static class ReportedDevicesBean {@XStreamAlias(“reported_device”)private ReportedDeviceBean reported_device;public Repo

2022-03-01 20:07:23 331

原创 Android 仿知乎日报在切换Fragment页面,按back返回时,同步修改Toolbar的title

//Fragment的初始化mFm = getSupportFragmentManager();FragmentTransaction ft = mFm.beginTransaction();mCurrentFragment = mFm.findFragmentById(R.id.content_container);//如果为空 说明是初始化, 不为空说明可能是屏幕旋转等事件if (mCurrentFragment == null) {TipsUtils.LogI(TAG, " mCurren

2022-03-01 20:05:57 273

原创 android webView 的WebSettings说明,程序员的中年危机

是否允许访问文件,默认允许。注意,这里只是允许或禁止对文件系统的访问,Assets 和 resources 文件使用file:///android_asset和file:///android_res仍是可访问的。setAllowFileAccessFromFileURLs (boolean flag)是否允许运行在一个URL环境(the context of a file scheme URL)中的JavaScript访问来自其他URL环境的内容,为了保证安全,应该不允许。也请注意,这项设置只影响对

2022-03-01 20:04:32 450

原创 Android Webview upload 图片上传,移动智能终端开发报告

public static final int REQUEST_SELECT_FILE = 100;public final static int FILECHOOSER_RESULTCODE = 1;public ValueCallback<Uri[]> uploadMessage;public ValueCallback mUploadMessage;public ProgressBar mWebLoadingProgressBar;@SuppressLint(“NewApi”)

2022-03-01 20:03:07 296

原创 Android Studio项目用Git上传至码云(OSChina),可能是全网最细的Android-资源加载机制剖析

把Android Studio项目导入码云2.选择自己所创建的整个工程,点OK3.点过OK之后会发现,在Project下 部分文件变为红色4.点击Add5.目录下字体颜色变成绿色6.点击红色箭头指向的地方(可能会提示填写邮箱地址,即你注册OSChina填写的邮箱地址)7.main文件上的勾点掉,(部分情况名字不一样,位置一样),Message部分内容随便输入,然后点击Commit and Push8.接下来的提示窗口选择Commit9.点击Define remote

2022-03-01 20:00:17 301 1

原创 Android Studio自定义模板实现一键创建MVP结构,安卓rxjava获取网络时间

通过这种方式创建的 Activity 会自动在 AndroidManifest.xml 中完成注册,创建其他组件也可以通过这种方式。不过,如果你正在使用某种开发模式,譬如 MVP、MVVM 等,你每创建一个 Activity 就意味着需要同时创建一系列其他相关的类。为了避免这种毫无意义的重复性劳动,我们可以编写模板代码去实现一键创建重复代码。开始==下面我们就来开始模版的编写吧。首先,找到你的 Android Studio 的安装目录,然后根据这个目录找到 …\templates 目录:然后

2022-03-01 19:58:52 158

原创 Android Studio中的 Image Asset Studio(图标生成工具),kotlin常用高阶函数

Android Studio 包含一个名为 Image Asset Studio 的工具,它可以帮我们把自定义图像、系统图标素材、文本字符串自动生成适配系统的应用图标。它为你的应用程序支持的每个像素密度生成一组适当分辨率的图标。Image Asset Studio 将新生成的图标放置res/在项目目录下的特定文件夹中(例如 mipmap/ 或 drawable/)。在运行时,Android 根据运行应用的设备的屏幕密度使用适当的资源。Image Asset Studio 可帮助您生成以下图标类型:

2022-03-01 19:57:27 508

原创 Android Studio 的NotePad制作(日志本),android语言基础教程培训

builder.create().show();break;}case 2:{Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.parse(“smsto:”));if(!note.getNoteContent().equals(note.getNoteTitle())){intent.putExtra(“sms_body”,note.getNoteContent() + “\n” + note.getNoteTitle());}else

2022-03-01 19:56:02 338

原创 Android Studio aar包的使用,阿里架构师深入讲解Android开发

编译生成aar执行Build Project或者在右边的gradle栏中选中对应的library module然后执行对应的assemble命令即可。编译完成以后会在对应的module下面的/build/outputs/aar/下面生成aar包:如果你执行的是Build操作那可能生成的aar包只有debug包,如果你执行的是assemble操作,则对应目录下会生成debug和release包,其中release包也是可以配置混淆的(如果想要减少aar包的体积或者不想让别人看到源码)。使用aar包时

2022-03-01 19:54:37 812

原创 Android Studio 4,android移动开发项目化教程

新增了 viewBinding 指令,当我们开启设置为 true 的时候,编译器会为我们生成一个视图绑定类,即下图中的 ActivityMainBinding。viewBinding 的目的在于确保我们在代码中所使用的 View 是试图中确切存在的。防止使用findViewById 为空引起崩溃。(不过我在 4.0 canary 1 上面没有开启成功,应该是还有 bug )视图方面===========================================================.

2022-02-18 13:08:39 423

原创 Android Framework学习笔记(二)Zygote进程启动过程,万字总结

linux的根进程,android系统是基于linux系统的,因此可以算作是整个android操作系统的第一个进程;Zygote进程android系统的根进程,可以作用Zygote进程fork出SystemServer进程和各种应用进程;SystemService进程主要是在这个进程中启动系统的各项服务,比如ActivityManagerService,PackageManagerService,WindowManagerService服务等;各种应用进程启动自己编写的客户端应用时,一般都是重新

2022-02-18 13:00:09 367

原创 Android R DisplayManagerService模块(1) 启动,大专生三面蚂蚁金服

SystemServer中启动DMS后,并保留了DMS对象引用,因此除了执行正常启动方法之外,还进行了以下操作:// frameworks/base/services/java/com/android/server/SystemServer.javaprivate void startBootstrapServices() {…mDisplayManagerService.setupSchedulerPolicies();}private void startOtherServices() {

2022-02-17 18:11:15 301

原创 Android OpenGLES + Camera1 相机预览,android开发视频播放全屏选集

isCreate = true;}@Overridepublic void onChange(int width, int height) {if (isChange) {return;}onChangePre();setWidth(width);setHeight(height);onViewport();onInitFbo();onChangeAfter();isChange = true;}@Overridepublic void onDraw(int textureI

2022-02-17 18:08:25 1594

原创 Android MyCard支付,2018年安卓面试题

private class MyWebViewClient extends WebViewClient {@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) {if (url.startsWith(“http:”) || url.startsWith(“https:”)) {return false;} else {MLog.e(“shouldOverrideUrlLoading”);try {

2022-02-17 18:04:09 150

原创 android listview添加headview,2021年“金三银四”来袭

View headerView = getLayoutInflater().inflate(R.layout.listhead, null);Button btn = (Button) headerView.findViewById(R.id.button1);btn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {Toast.makeText(MainActivity.thi..

2022-02-17 18:01:19 1675

原创 Android HTTP通信基础,安卓面试题2020对kotlin的要求

Host(发送请求时,该报头域是必需的):Host请求报头域主要用于指定被请求资源的Internet主机和端口号,它通常从HTTP URL中提取出来的。eg:我们在浏览器中输入:http://www.test.com/index.html。浏览器发送的请求消息中,就会包含Host请求报头域,如下:Host:www…test.com(使用缺省端口号80,若指定了端口号,则变成:Host:www…test.com:指定端口号)User-Agent:请求报头域允许客户端将它的操作系统、浏览器和其它属性告诉服

2022-02-17 17:59:54 2157

原创 Android Studio 配置Git,嵌入式应用开发工程师

点击test按钮如果出现 Git executed successfully 对话框说明配置成功,同时对话框会显示你安装的git版本号,如下图:四、点击按下图操作:点击“Generate…”在GitHub上输入自己的用户和密码点击“头像”——settings点击Developer settings点击Personal access tokens——Generate new token在“Note”上随便输入什么,最下面的点击“Generate token”复制这token.

2022-02-16 13:19:41 171

原创 Android ONE store支付,身为一个安卓程序员Context都没弄明白

4、实现应用内支付详情可通过VPN:https://dev.onestore.co.kr/devpoc/reference/view/IAP_v17_05_implementation_cn(已更新至v6版本文章最后有电梯)使用SDK实现应用内支付4-1、发起ONE store登录的请求调用 launchLoginFlowAsync,请求登录于ONE store。以参数传递的requestCode用于以后确认返回至onActivityResult的数据。/** PurchaseClient的

2022-02-16 13:16:51 473

原创 Android Okhttp3添加https自签名证书以及Glide4,成为一名合格Android架构师

二、自签名证书什么是自签名证书(self-signed certicates)?自签名证书就是没有通过受信任的证书颁发机构, 自己给自己颁发的证书.SSL 证书大致分三类:由安卓认可的证书颁发机构CA(Certificate Authority)(如: VeriSign、DigiCert), 或这些机构的下属机构颁发的证书.没有得到安卓认可的证书颁发机构颁发的证书.自己颁发的证书, 分临时性的(在开发阶段使用)或在发布的产品中永久性使用的两种.而只有An

2022-02-16 13:15:26 1751

原创 Activity快速转换为Diglog,搭建android开发环境实验报告

String pn = pinfo.get(i).packageName;if (pn.equals(“com.tencent.mobileqq”)) {return true;}}}}catch (Exception e){return false;}return false;}/**判断支付宝是否可用@param context@return*/public static boolean checkAliPayInstalled(Context conte

2022-02-15 12:59:20 1148

原创 @Android程序员:这-5-道刁钻的-Activity-生命周期面试题

mLayoutInflater.inflate(layoutResID, mContentParent);}然而这一步只是加载好了布局,生成一个 ViewTree , 具体怎么把 ViewTree 显示出来,答案就在下面:ActivityThread.javapublic void handleResumeActivity(…){// onResume 回调ActivityClientRecord r = performResumeActivity(…)final Activity a = r

2022-02-15 12:55:05 143

原创 Android Gallery2源码分析,安卓事件分发机制面试

为了给客户更好的用户体验,我们会先decode一张图片的thumbnail即缩略图, 当我们点击一张图片进来之后,我们首先看到的是这个图片的thumbnail,这样用户就知道图片有被显示但是,由于thumbnail的分辨率有限,贴到屏幕上之后就会比较模糊。这就是为什么一开始看到模糊的原因4. 这个时候,还是逃不掉decode整张图片的步骤,我们完全可以等整张图片decode完毕之后再更新到屏幕。但我们认为这种方式也不是太好,为什么不是decode出一部分就显示一部分呢?所以最终的方法是:我们将整

2022-02-06 12:43:15 275

原创 android ble 某些手机连接不上,又不知道什么原因,填坑吧

5… Read/Write Characteristic/Descriptor/RemoteRssi(),一般在不同的线程中回调。(除了onDescriptorWrite返回的线程与写入线程为同一个线程???)BluetoothDevice.conncectGatt(),BluetoothGatt.connect(),BluetoothGatt.disconnect(),BluetoothGatt.discoverServices()最好都在主线程,否则会遇到很多意想不到的麻烦。6… BLE的特

2022-02-06 12:40:25 1019

原创 Android Binder组合ContentProvider跨进程调用,html5移动端开发教程

接下来通过一个实例来看看怎么具体地借助 ContentProvider 和 Binder 来进行便捷的跨进程通信。Server进程服务端接口定义在服务端进程或者服务端 App 中,定义 AIDL 接口文件:interface IMyAidlInterface {int getCount();}make 之后实现接口:class CountServiceImpl : IMyAidlInterface.Stub() {override fun getCount(): Int {println

2022-02-06 12:39:00 2413

原创 Android AIDL 教程 (一)—,android开发模拟器推荐

服务端的实现服务端的实现,一般来说,需要以下步骤:将请求抽象成接口,并编写 aidl 文件;编写一个 Service,实现接口,处理客户端的请求,并将 binder 返回回去;在 AndroidManifet 配置 Service,将我们的 Service 暴露出去。将请求抽象成接口,编写 aidl 文件一般来说, AIDL 文件支持以下类型Java 编程语言中的所有原语类型(如 int、long、char、boolean 等等)StringCharSeque

2022-02-06 12:37:35 181

原创 Android 2020-2021年 最新面试题(附个人面试经历),Glide的缓存机制

4.Broadcast注册方式与区别(1)静态注册(minifest),(2)动态注册http://www.jianshu.com/p/ea5e233d9f43此处延伸:什么情况下用动态注册5.HttpClient与HttpUrlConnection的区别http://blog.csdn.net/guolin_blog/article/details/12452307此处延伸:Volley里用的哪种请求方式(2.3前HttpClient,2.3后HttpUrlConnection)6.http

2022-02-06 12:36:11 330

原创 Android 10(Q)_11(R) 分区存储适配,androidui图形化

需要申请READ_EXTERNAL_STORAGE 权限:通过 MediaStore API对所有的媒体集进行查询、修改、删除的操作。调用 Storage Access Framework API :会启动系统的文件选择器向用户申请操作指定的文件新的访问方式:Android 11 ®:Android 11 ® 在 Android 10 (Q) 中分区存储的基础上进行了调整1. 新增执行批量操作为实现各种设备之间的一致性并增加用户便利性,Android 11 向 MediaSt..

2022-02-06 12:34:46 166

原创 Android - MVC、MVP与MVVM架构,kotlin环境搭建

演示者(Presenter)演示者会根据模型和视图进行操作。 它从存储库(模型)检索数据,并将其格式化以显示在视图中。通常,视图实现实例化具体的Presenter对象,并为其提供引用。2.项目Github地址。https://github.com/mythmayor/MvpArchitecture三、MVVM1.MVVM(Model-View-ViewModel)介绍。MVVM即为模型-视图-视图模型,是一种软件架构模式,可促进将图形用户界面(视图)的开发(通过标记语言或GUI代码)与业务逻

2022-02-06 12:33:21 2592

原创 Andorid 开发艺术探索笔记(3),面试题解析已整理成文档

有两个部分组成,mimeType和URI。mimeType是指媒体类型,比如image/jepg等的图片,音频,视频等,媒体格式。而URI中包含的数据就比较多了,下面是其格式Scheme:URI模式,比如http、file、content等,如果没有指定Scheme,那么整个URI无效。Host:URI的主机名,比如www.baidu.com,如果没有指定host,则整个URI无效。Port:URI的端口号,比如80,仅当scheme和host指定了才有效Path、PathPrefix、PathP

2022-02-06 12:31:56 86

原创 Andorid 开发艺术探索笔记(2),高级UI都没弄明白凭什么拿高薪

(以上均在singTask模式下进行)singleInstance:单实例模式。是一种加强的singleTask模式,所以它具有singleTask模式的功能,还加强了一点,就是此种模式的Activity只能单独的位于一个任务栈。Activity A这种模式下只能单独的位于栈S1中,Activity B只能单独的位于栈S2中。<关于TaskAffinity>它标志了一个Activity所需要任务栈的名字。默认情况下都是Activity应用的包名。所以它和singleTask配对使用。

2022-02-06 12:30:31 112

原创 Android TCP传输自定义格式数据帧,【性能优化实战】

使用地址和端口登录到服务器:InetAddress address = InetAddress.getByName(Constant.Server.NAME);socket = new Socket(address, Constant.Server.PORT);常用的数据类型转换:1.int > byte[]public static byte[] intToBytes(int value, ByteOrder mode) {byte[] src = new byte[4];if(mod

2022-02-05 10:10:57 266

原创 Android Studio记录在使用过程遇到的各种问题及解决,安卓手机内存优化

}(2) apt插件问题: android-apt plugin is incompatible with the Android Gradle plugin.Please use 'annotationProcessor'解决方法:在project的build.gradle中删除classpath ‘com.neenbedankt.gradle.plugins:android-apt:x.x’classpath ‘me.tatarka:gradle-retrolambda:x.x.x’在mod

2022-02-05 10:09:33 331

原创 Android studio权限使用相关相关,BAT等大厂必问技术面试题

package com.ldw.test;import androidx.appcompat.app.AppCompatActivity;import androidx.core.app.ActivityCompat;import android.Manifest;import android.app.Activity;import android.content.Intent;import android.content.pm.PackageManager;import android.ne

2022-02-05 10:06:42 970

原创 Android Studio之Gradle多渠道打包,android面试2020

友盟多渠道打包===========废话不多说,以友盟统计为例,在AndroidManifest.xml里面会有这么一段:<meta-dataandroid:name=“UMENG_CHANNEL”android:value=“Channel_ID” />里面的 Channel_ID 就是渠道标示。我们的目标就是在编译的时候这个值能够自动变化。第一步 在 AndroidManifest.xml 里配置 PlaceHolder<meta-data

2022-02-05 10:05:17 438

原创 Android R WindowManagerService模块(1) WMS整体架构及启动过程

DisplayArea是Android R上新添加的容器,目的就是将复杂的窗口层级管理简单化、低耦合。而在树结构中,各个容器结构如下:可以看到,在树结构中,根节点为RootWindowContainer,叶子节点为WindowState。 正是通过这种结构,WMS中将系统中所有的窗口显示管理得井井有条,并将所有窗口以Surface的形式送到SurfacaFlinger中进行合成和显示。2.WMS启动流程接下来我们看下WMS的启动过程。WindowManagerService没有继承与Syste.

2022-02-05 10:02:27 1907

原创 Android PackageInstaller:安装应用的应用,android综合面试

mAppInfo = null;}} catch (NameNotFoundException e) {mAppInfo = null;}mInstallFlowAnalytics.setReplace(mAppInfo != null);mInstallFlowAnalytics.setSystemApp((mAppInfo != null) && ((mAppInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0));star

2022-02-05 10:01:02 556

空空如也

空空如也

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

TA关注的人

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