自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Flutter MissingPluginException

问题Unhandled Exception: MissingPluginException(No implementation found for method pickImage on channel plugins.flutter.io/image_picker)在我们使用第三方提供的Flutter或dart库时(比方说错误信息中的image picker图片选择库)有可能会出现上述错误,错误信息中提示找不到plugin,在 channel(plugins.flutter.io/image_pick

2020-07-29 14:45:54 4101

原创 敏捷开发主流方式之精益开发

精益开发我先把精益开发的概念和七条基本原则列一下,然后再逐条原则表述一下我的理解。概述精益(Lean)管理的思想起源于丰田公司,旨在创造价值的目标下,通过改良流程不断地消除浪费。这种方法现已被广泛用于生产制造管理,对于IT系统建设,精益开发的常用工具模型是价值流模型。精益开发的基本原则杜绝浪费:将所有的时间花在能够增加客户价值的事情上。推迟决策:根据实际情况保持可选方案的开放性,但时...

2019-12-02 19:51:59 885

原创 Handler导致内存泄漏

new Handler().postDelayed(new Runnable() { @Override public void run() { Log.d("log", "runFinish"); } }, 10000);如果 Activity 中存在上述代码,当 Runnabl

2017-08-24 11:36:14 337

原创 Handler机制

Handler提供两种方式发送消息: post(runnable) 、 sendMessage(msg) , post 方式实现上也是通过 sendMessage 方法将消息发送出去的,区别在于 post 方法会先调用getPostMessage(runnable) 并将参数 runnable 赋值给创建好的 Message 对象的成员 callback 然后再调用 sendMessage(msg

2017-08-09 18:06:46 223

原创 View事件分发

点击事件的传递过程:Activity–>Window–>顶级View(DecorView)–>ViewGroup–>View(ViewGroup–>View)点击事件的分发过程由三个很重要的方法来共同完成:dispatchTouchEvent、 onInterceptTouchEvent 和 onTouchEvent三者的关系可以有一段伪代码来展示:public boolean dispatchTo

2017-08-04 15:33:43 171

原创 Activity启动过程

activity.startActivty(…) Instrumentation 的 execStartActivity方法 ActivityManagerNative. getDefault() .startActivity(…)在其中得到AndroidManagerService的Binder并在AMS中startActivity,在AndroidManagerService.startAc

2017-07-19 17:46:35 350

原创 Window(待续)

VIew需要由Window来承载,Activity对View进行操作。 Window的add、delete、update操作过程需要通过 WindowManager 的来实现,WindowManager 是一个接口,它的真正实现是WindowManagerImpl 类。而WindowManagerImpl则将操作全部交给 WindowManagerGlobal 来处理。ArrayList< Vie

2017-07-19 15:36:18 163

原创 View绘制

View 的三大流程均是通过 ViewRoot 来完成的,ViewRoot 对应于ViewRootImpl 类,它是连接 WindowManager 和 DecorView 的纽带。在 ActivityThread 中,当 Activity 对象被创建完毕后,会将DecorView 添加到 Window 中,同时会创建 ViewRootImpl 对象,并将 ViewRootImpl 对象和 Deco

2017-07-19 15:20:31 173

原创 TCP连接与断开

TCP建立连接是三次握手的理由:第一次client—>server client发送一个SYN(J)包给server,server接收到之后server可以确认client的发送和自己的接收是没有问题的;第二次server—>client server接收到SYN(seq=J)包后就返回一个ACK(J+1)包以及一个自己的SYN(K)包,client端接收到后client可以确认server的发

2017-07-12 18:01:24 341

原创 View的位置参数

View的位置主要由它的四个顶点来决定,即它的四个属性:top、left、right、bottom,分别表 示View左上角的坐标点(top,left)以及右下角的坐标点(right,bottom)。同时,我们可以 得到View的大小:width = right - leftheight = bottom - top而这四个参数可以由以下方式获取:Left = getLeft();Right

2017-07-11 16:34:45 217

原创 Messenger

使用MessengerMessenger可以在不同进程间传递Message对象。是一种轻量级的IPC方案,底层实现是 AIDL。 具体使用时,分为服务端和客户端: 1. 服务端:创建一个Service来处理客户端请求,同时创建一个Handler并通过它来创建一个 Messenger,然后再Service的onBind中返回Messenger对象底层的Binder即可;private final

2017-07-10 18:35:40 363

原创 AIDL

Android studio AIDL在‘java’平行目录下右键新建AIDL文件;实体类的包要与.aidl的包同名(但并非相同包);

2017-07-07 19:09:14 248

原创 Activity四中启动模式

Android使用栈来管理Activity(Task 和 BackStack)。manifest中的四种launch-modestandard(Activity默认的启动模式) 每次启动都会重新创建一个实例,不管这个Activity在栈中是否已经存在;谁启动了这个Activity,那么Activity就运行在启动它的那个Activity所在的栈中;用Application去启动Activi

2017-07-05 14:49:03 286

原创 Activity隐式启动

Activity隐式启动

2017-07-04 17:41:46 521

转载 Activity 自行处理运行时变更

如果应用在特定配置变更期间无需更新资源,并且因性能限制您需要尽量避免重启,则可声明 Activity 将自行处理配置变更,这样可以阻止系统重启 Activity。注:自行处理配置变更可能导致备用资源的使用更为困难,因为系统不会为您自动应用这些资源。 只能在您必须避免 Activity 因配置变更而重启这一万般无奈的情况下,才考虑采用自行处理配置变更这种方法,而且对于大多数应用并不建议使用此

2017-07-04 11:16:42 332

转载 gittujie

如果对git及git命令已经有一些了解的话看下面这篇博文会对git原理有进一步理解,对git的使用会有一定的帮助:https://marklodato.github.io/visual-git-guide/index-zh-cn.html

2015-02-06 10:27:23 198

原创 android 5.0新特性——修改通知栏颜色

在界面中添加如下代码可以将app的界面填充全屏:getWindow().addFlag(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

2015-02-06 10:20:46 814

空空如也

空空如也

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

TA关注的人

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