自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android中Gson使用,flutter调用原生sdk

这里是最简单的用法,created_at直接定义了String类型,如果你想要Date类型的也可以,就变成下面的例子:public class Foo {public int id;public String body;public float number;public Date created_at;}public static final String JSON_DATA = “…”;GsonBuilder gsonBuilder = new GsonBuilder();gsonBu

2022-03-02 20:25:03 718

原创 Android——浅谈Activity生命周期,真牛皮

onRestart(), 表示Activity正从停止状态重新启动,如果当前Activity状态从不可见到可见,则会被调用。示例代码如下:@Overrideprotected void onResume(){super.onResume();}onResume(), 页面即将可见,在此之后Activity出现在前台并开始活动。此方法在Activity获得焦点开始与用户交互时调用。示例代码如下:@Overrideprotected void onResume(){super.onRes.

2022-03-02 20:22:13 311

原创 Android-高级-UI-进阶之路-(二)-深入理解-Android-8-0-View-触摸事件分发机制

事件分发源码解析上一小节我们分析了 View 的事件分发机制,本节将从源码的角度进一步去分析。Activity 对点击事件的分发过程点击事件用 MotionEvent 来表示,当一个点击操作发生时,事件最先传递给当前 Activity ,由 Activity 的 dispatchTouchEvent 来进行事件派发,具体的工作是由 Activity 内部的 Window 来完成的。Window 会将事件传递给 DecorView ,DecorView 一般就是当前界面的底层容器也就是setCont

2022-03-02 20:20:48 355

原创 Android-音视频学习系列-(二)-交叉编译动态库、静态库的入门学习

环境变量配置ndk 在 Linux 上的环境变量配置://1. vim /etc/profile#NDK环境变量export NDK_HOME=/root/android/ndk/android-ndk-r17cexport PATH=PATH:PATH:PATH:NDK_HOME//2. 保存source /etc/profile//3. 测试ndk-build -v如果出现如下字样,就证明配置成功了。交叉编译在 Linux 上的环境变量配置(做一个参考,采坑之后的环境配置

2022-03-02 20:17:58 245

原创 Android-音视频学习系列-(三)-Shell-脚本入门,想跳槽涨薪的必看

获取字符串长度:str_length=‘123456’echo ${#str_length}输出: 6提取字符串:以下实例从字符串第 2 个字符开始截取 4 个字符:echo ${str_length:1:4}输出: 2345查找字符串:echo expr index "$str_length" 3 //是反斜杠 tab 上 1 键左输出:3传递参数我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执

2022-03-02 20:16:33 233

原创 Android-百度地图定位实现仿钉钉签到打卡功能(附源码)

@Overrideprotected void onPause() {super.onPause();mMapView.onPause();}@Overrideprotected void onStop() {super.onStop();//取消注册传感器监听mSensorManager.unregisterListener(this);}###第二步:开启定位/***定位选项设置@return*/public void getLocationClientOption()

2022-03-02 20:13:42 1066

原创 OC中NSString 的常用方法,2021Android高级面试题及答案

//判断字符串是否以指定字符串开头[str1 hasPrefix:@“aaa”];//判断字符串是否以指定字符串结尾[str1 hasSuffix:@“aaa”];//判断字符串是否包含指定字符串,返回位置和长度NSRange range = [@“123456” rangeOfString:@“456”];NSLog(@"%@", NSStringFromRange(range));//反向搜索range = [@“123456456qweasasd456” rangeOfString:@

2022-03-01 22:21:18 2064

原创 NestedScrolling 机制深入解析,你真的了解Android系统启动流程吗

boolean dispatchNestedPreFling(float velocityX, float velocityY, boolean consumed)调用这个方法,在scrolling child 处理 fling 动作之前,提供机会scrolling parent 先于scrolling child 处理 fling 动作。三个参数都是输入参数,velocityX 表示水平方向的速度,velocityY 表示垂直方向感的速度,consumed 表示scrolling child 是否.

2022-03-01 22:19:53 2582

原创 Native开发工具之应用开发编辑器&打包发布(一),安卓开发视频教程

设置:https://nuclide.io/docs/editor/setup/Nuclide with React Native:https://nuclide.io/docs/platforms/react-native/支持平台:Windows、Mac、LinuxLicence:开源特性:内置调试远程开发Developing Hack支持 Mercurial工作集Nuclide 是基于 Atom 之上构建的单独的一个包,其提供可编程性且社..

2022-03-01 22:18:28 293

原创 Linux之X11+OpenGL+EGL绘制(二十),android开发技术难点

norm_x = 0.0,norm_y = 0.0,offset_x = 0.0,offset_y = 0.0,p1_pos_x = 0.0,p1_pos_y = 0.0;GLint phase_loc, offset_loc, position_loc;bool update_pos = false;const float vertexArray[] = {0.0, 0.5, 0.0,-0.5, 0.0, 0.0,0.0, -0.5, 0.0

2022-03-01 22:17:03 576

原创 Kotlin将继续助力Android开发,作为正在开发的你了解过哪些,附Android面经

四、高阶函数高阶函数的基本概念常见高阶函数(forEach,map,flatmap,fold,reduce,filter,takeWhile,let,apply,with,use)尾递归优化 (tailrec)闭包(函数式编程的福音)函数复合(f(g(x)),infix)柯里化(Currying)-函数调用链偏函数五、Lambdas编程lambdas简介lambdas和集合lambda表达式访问作用域中的变量成员引用集合的函数式API之filter和mapall、any、

2022-03-01 22:15:38 1889

原创 Kotlin学习手记——单例,211本硕如何通过字节跳动、百度、美团Android面试

val (hello, world) = pairdata不能被继承,那么为啥不能有子类呢?可以先看一下kotlin为data类生成的对应的java类是什么样的,查看方式,doule shift键,然后Actions中输入kotlin Bytecode显示:点击Decompile即可查看对应生成的java代码以下是Book的数据类对应生成的java代码public final class Book {private final long id;@NotNullprivate final

2022-03-01 22:14:13 177

原创 Kotlin协程之flow工作原理,想提高开发效率的必看

safeCollector.releaseIntercepted()}}public abstract suspend fun collectSafely(collector: FlowCollector)}可以看到 collect 方法中通过 collector 封装了一个 SafeCollector 对象,并以其为参数执行了 SafeFlow.collectSafely 方法,而 collectSafely 方法只是执行了 block 代码块(collector.block()),它是一个扩展

2022-03-01 22:12:47 723

原创 kotlin与java在Android开发中的简单对比(正在更新中),移动端app开发成本

        1.1.4 多重条件java代码:if (score >= 0 && score <= 300) { }kotlin代码:if (score in 0…300) { }        1.1.5 拼接字符串java代码:String strA = “a”;String strB = “b

2022-03-01 22:11:23 529

原创 Koltin32,android网络开发技术答案

rvOrder.adapter = adapterswipeLayout = orderView.find(R.id.srl_order)swipeLayout.setOnRefreshListener(object : SwipeRefreshLayout.OnRefreshListener{override fun onRefresh() {//下拉后重新请求val userId = TakeoutApp.sUser.idif (-1 == userId) {toast(“请先登录,再查看

2022-03-01 22:09:57 211

原创 Koltin24,10天拿到字节跳动安卓岗位offer

import com.example.takeout.presenter.HomeFragmentPresenterimport com.example.takeout.ui.fragment.HomeFragmentimport dagger.Moduleimport dagger.Provides@Module class HomeFragmentModule(val homeFragment: HomeFragment){@Provides fun provideHomeFragmentPr

2022-03-01 22:08:32 121

原创 Kotlin 集合函数锦集,这操作真香

val numList = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)val chunkedLists = numList.chunked(3)println(chunkedLists) // [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]]}复制数组相关函数你可以通过使用各种函数来复制现有的数组,例如:copyIntocopyInto可以把一个数组的元素替换成另一个数组,或者,如果目标数组由于大小限制或索引越界而不能保存原始数

2022-02-17 22:19:24 689

原创 KMP算法重点讲k=next[k],阿里官方推荐

int j = 0, k = -1;next[0] = -1;while (j < p.length - 1) {if (k == -1 || p[j] == p[k]) {// 这里有一个优化的点, 但是这里只写最原始的代码, 如何优化可以参考其他文章next[++j] = ++k;} else {k = next[k];}}System.out.println("next = " + Arrays.toString(next));return next;}先说几个结论:

2022-02-17 22:17:59 690

原创 King-JVM中的线程行为,flutter开源项目2019

Thread daemonThread = new Thread(() -> IntStream.rangeClosed(1, 100000).forEach(System.out::println));daemonThread.setDaemon(true);daemonThread.start();Thread.sleep(10);System.out.println("End of the execution in the Thread " +Thread.currentT

2022-02-17 22:16:34 117

原创 Jetpack_LiveData入门指南,androidmvp架构

有了数据源之后,总需要有观察者来观察数据源,不然数据源就失去了存在的意义。那么在哪里观察数据源呢?在大多数情况下,在应用组件的onCreate()方法中访问LiveData是个合适的时机。这样可以确保系统不在Activity或Fragment的onResume()方法进行多余的调用;另外这样也确保Activity和Fragment尽早有数据可以进行显示。class NameActivity : AppCompatActivity() {private lateinit var model: Name

2022-02-17 22:15:09 192

原创 Jetpack Compose Modifier用法详解,如何保证高可用

Card(elevation = 4.dp) { /…/ }}}上面的代码中,我们通过Modifier类调用的方式,去调用不同的修饰符函数。clickable 使可组合项响应用户输入,并显示涟漪。padding 在元素周围留出空间。fillMaxWidth 使可组合项填充其父项为它提供的最大宽度。size() 指定元素的首选宽度和高度注意:修饰符的函数调用顺序非常重要。由于每个函数都会对上一个函数返回的 Modifier 进行更改,因此顺序会影响最终结果。比如上面是对Column整体控

2022-02-17 22:13:44 1391

原创 Java面试题八:抽象类和接口的区别,移动终端软件开发

public void eat() {LogUtils.e(“我是人,我要吃大鱼大肉!”);}@Overridepublic void sleep() {LogUtils.e(“我是人,每天必须睡够8个小时!”);}}OK,现在类已经写完了。接下来结合以上的代码说一下抽象类的用处:细心地同学可以看得出,在cat和person这两个类中都含有了sleep和eat这两个方法,但是它们的方法体却不一样。重点就在这里,假设不定义AbstractAnimal 这个抽象类以用来让cat和pe

2022-02-17 22:12:19 115

原创 java中对象的引用(强引用、软引用,handlerthread用法

1.强引用以前我们使用的大部分引用实际上都是强引用,这是使用最普遍的引用。如果一个对象具有强引用,那就类似于必不可少的生活用品,垃圾回收器绝不会回收它。当内存空 间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足问题。2.软引用(SoftReference)如果一个对象只具有软引用,那就类似于可有可物的生活用品。如果内存空间足够,垃圾回收器就不会回收它,如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,

2022-02-17 22:08:04 170

原创 Java 反射机制详解,android面试项目经验

e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}}}我们将可以看到以下的输出结果testConstructor: =Person [country=China, city=null, name=null, province=null, height=null, age=12]可以看到 country=China,age=12 这说明我们成功通过反射调用 Person 带两个参数

2022-02-17 22:06:39 149

原创 MultiType显示多种数据类型,宅家36天咸鱼翻身入职腾讯

MultiState=====================================================================MultiState 这个库为了管理请求数据的加载中、加载成功、加载失败、数据为空的情况,与MultiType配合使用更合适。RecyclerViewWrapper==============================================================================RecyclerView

2022-02-16 17:42:08 1643

原创 MPAndroidChart 教程:Realm,全套教学资料

有关如何设置你的领域实例(包含详细信息RealmConfiguration请看看这里 。 在本教程中,我们假设我们的境界数据库的数据是这样的:biao ge该代码存储前面提到的Score在本地领域数据库例如可以是这样的对象:realm.beginTransaction();Score score1 = new Score(100f, 0, “Peter”);realm.copyToRealm(score1);Score score2 = new Score(110f, 1, “Lisa”);

2022-02-16 17:40:43 1617

原创 MethodScope,flutter插件播放音乐

Usage@MethodScopeCreate a custom scope annotation using @MethodScope annotation.@MethodScopepublic @interface MyScope {}Here is the kotlin code example.@MethodScopeannotation class MyScopeAttach the custom scope annotation on top of a c

2022-02-16 17:39:18 128

原创 markdown语法笔记(二),2021Android进阶学习资料

graph TBAB[bname]C(cname)D((dname))E>ename]F{fname}连线节点间的连接线有多种形状,可以在连接线中加入标签:箭头连接 A1–->B1开放连接 A2—B2标签连接 A3–text—B3箭头标签连接 A4–text–>B4虚线开放连接 A5.-B5虚线箭头连接 A6-.->B6标签虚线连接 A7-.text.-B7标签虚线箭头连接 A8-.text.->B8粗线开

2022-02-16 17:36:28 241

原创 Margin的优先级,移动网页开发框架

android:background="@color/colorPrimary"app:layout_constraintLeft_toLeftOf=“parent”app:layout_constraintTop_toTopOf=“parent” /></androidx.constraintlayout.widget.ConstraintLayout>得知layout_marginHorizontal >layout_marginLeft垂直方向同理<and

2022-02-16 17:35:03 1715

原创 Koltin35,头条android面试算法

fun getBusinessInfo() {val businessCall = takeoutService.getBusinessInfo()businessCall.enqueue(callback)}override fun parserJson(json: String) {val gson = Gson()val jsoObj = JSONObject(json)val allStr = jsoObj.getString(“list”)//商品类型的集合goodstypeLi

2022-02-15 17:45:14 124

原创 java 解决文件名重复问题的两种方法,android语言基础教程培训

sdcard/pic/tanyang.jpgtoPrefix: tanyangtoSuffix: tanyang.jpg@param from@param toPrefix@param toSuffix@return*/public static File createOrRenameFile(File from, String toPrefix, String toSuffix) {File directory = from.getParentFile(..

2022-02-15 17:39:34 1676

原创 【Kotlin篇】差异化分析,开发移动app公司

fun main(args: Array) {val book = Book().let {it.name = “《计算机网络》”}print(book)}控制台输出:kotlin.Unit可以看到我们将Book对象的name值进行了赋值操作,同样对Book对象进行打印,但是最后控制台的输出结果为“kotlin.Unit”,这是因为在let函数块的最后一句是赋值语句,print则将其当做是一个函数来看待。这是let角色设定的第一点:1️⃣let块中的最后一条语句如果是非赋值语句,则默认

2022-02-05 15:31:50 82

原创 【Flutter 专题】114 图解自定义 ACEProgressPainter 对比进度图

canvas.drawPath(Path()…moveTo(size.width - _kProPaddingWidth - _strokeWidth * 0.5, Offset.zero.dy)…lineTo(size.width - _kProPaddingWidth - _strokeWidth * 0.5, _height)…lineTo(size.width * leftProgress + _height * 0.5 + _spaceWidth * 0.5 + _strokeWidth,

2022-02-05 15:30:25 185

原创 【Android工程师】,android开发框架搭建

字节跳动今年是否真的缺人?招聘策略是什么?(答:是。项目和实习经验吃亏没关系,今年招聘重视基础,换去年我肯定不给你过。)五、字节三面介绍项目,高三暑假做的App画某个功能的模块图,写出相关接口这样设计有什么问题?如何改进?QQ视频聊天使用什么协议?视频聊天为何会卡顿?TCP流量控制算法的细节?(×:包速率增长的函数关系说不清楚,感谢面试官放过)假设有节点自带p的丢包率,如何判断丢包是因为带宽不够还是随机丢包导致?如果视频聊天出现卡顿,如何在应用层面缓解?.

2022-02-05 15:27:34 396

原创 【1024】,你的技术真的到天花板了吗

{//代表Binder进程struct binder_proc *proc;//1binder_debug(BINDER_DEBUG_OPEN_CLOSE, “binder_open: %d:%d\n”,current->group_leader->pid, current->pid);//分配内存空间proc = kzalloc(sizeof(*proc), GFP_KERNEL);//2if (proc == NULL)return -ENOMEM;get_task_s

2022-02-05 15:26:09 198

原创 《毕业设计浪腾微博客户端开发--开篇》,醍醐灌顶

《毕业设计“浪腾微博客户端”开发–开篇》=========================前言:毕业设计是每个理工科类大学生毕业之前都要做的一件事情,文科的只有毕业论文,小巫本人也是2014年的应届毕业生,毕业设计自然也是要做的,说实在的,毕业设计对我来说不是一件很难的事,无论是实习期做的项目还是自己实践过的项目都可以拿一个过来做毕业设计。我发现有一些现象是,有很多大学生学了四年也不见得能自己弄出个东西出来,每到毕业季,会有一堆的毕业设计论文的外包项目,很多大学生掏钱让别人帮自己去做。我也只能说可悲。我

2022-02-05 15:24:44 2251

原创 《Effective Java》读书笔记,移动安全入门

equals()方法实现了等价关系。自反性。对于任何非null的引用值x,x.equals(x)必须返回true.(对象必须等于其自身)对称性。对于任何非null的引用值x和y,当且仅当y.equals(x)返回true时,x.equals(y)必须返回true。(警惕子类父类不同的equals实现时)传递性。对于任何非null的引用只x、y和z,如果x.equals(y)返回true,并且y.equals(z)也返回true,那么x.equeals(z)也必须返回true。(优先使用组合

2022-02-05 15:23:19 172

原创 “终于懂了” 系列,flutter蓝牙开发

3.1.1 动态配置组件工程类型单工程模式,整个项目只有一个工程,它包含:App module 加上各个业务组件module,就是所有的代码,这就是单工程模式。 如何做到组件单独调试呢?我们知道,在 AndroidStudio 开发 Android 项目时,使用的是 Gradle 来构建,Android Gradle 中提供了三种插件,在开发中可以通过配置不同的插件来配置不同的module类型。Application 插件,id: com.android.applicationLibrary 插.

2022-02-04 16:18:30 2071 1

原创 “你们程序员不就是修电脑的吗,你牛什么牛(1),android移动开发

自己当初也是如此,天真的以为计算机专业就是开发游戏,倒腾电脑的专业,所以自己就成了计算机学院的一员。上大学后,才发现和自己想象的完全不一样,依然要学习好多的数学专业课和语言专业课,只是这个语言不再局限于英语了,而是一些从未听过的 C/C++、C#、Java、Python。在学校的时候完全不知道自己应该学习什么,只能按照教学的安排一节课一节课的学习和实践,学校老师布置的任务也一如既往的简单,然而大家一片茫然,依然有很多的同学完全学不明白。埋头努力却得不到结果的感受,让一些同学越来越厌倦去上课,越来越厌倦考试

2022-02-04 16:14:15 186

原创 _ Dart 里的类型系统,阿里+头条+腾讯等大厂Android面试题分享

github.com/dart-lang/s…实例在对象的整个生命周期中,它只有一个类型,该类型在构造时确定并且永远不能更改:int x = 2;num y = x;print(x is int); // trueprint(y is int); // trueint z = y as int; // works用于声明变量类型的只是 interface ,它可以存储任何实现了该 interface 的子类型。方法当在实例上调用方法时,创建实例的类型始终决定了该方法的实现,例如:c.

2022-02-04 16:11:25 271

空空如也

空空如也

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

TA关注的人

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