天问

  • Blog
  • 热修复与动态加载
  • python爬虫
  • 专栏
    • 热修复与动态加载
    • NDK开发
    • 设计模式与架构
    • React Native
  • 好文转载
    • 计算机技术
    • 投资理财
    • 摄影与拍照技巧
  • 投稿
  • 关于本站及隐私政策
  • Github
StevenQ
为今天工作,为明天投资,为未来孵化一些东西!
插件化

【插件化】从插件化看Activity的启动流程

关于Activity的启动流程网上有很多分析文章,但绝大部分都是直接分析源码,这是我一直不赞成的一种方式,首先Activity的启动流程非常复杂,如果直接分析源码那么文章必然长篇大论,让人看的云里雾里抓不住重点,只见树木不见森林。另一方面个人认为单纯从理论角度分析源码是没有意义的,分析源码应该是为了解决某一个业务难题或开发疑惑,带着这个问题或疑惑从源码中去探寻解决这个问题的思路或方法。也就是输出倒逼输入。比如现在老板让你做一个Activity的插件化方案,你不知道该如何下手,假设网上也没这方面的资料,那么你是不是可…

2019年2月23日 0条评论 404点热度 5人点赞 天问 阅读全文
安卓开发

你真的会用View的post方法吗

安卓中在非UI线程中需要更新界面的时候,我们往往使用Handler的post方法或者View的post方法(当然还可以使用Activity的runOnUiThread),当我们已经有一个view对象的时候往往会选择后者,即使用该view对象调用post方法。但是你真的了解View的post方法吗?有没有遇到过View的post的Runnable对象中的代码在某些机型上未被执行?遇到之后深入探究过是什么原因吗? 最近在开发智能无感知SDK的时候遇到过一个很奇怪的坑,这里简单交代下背景,用户点击登录按钮后智能无感知SD…

2019年1月12日 1条评论 994点热度 6人点赞 天问 阅读全文
设计模式

【设计模式之】适配器模式

将一个类的接口转换成客户希望的另外一个接口。使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 适配器模式使用最广泛的就是如下2个场景: 系统需要使用一些已存在的类,但是这些类接口不符合当前系统需要,即接口不兼容 需要一个统一的输出接口,而输入端类型不可预知。通过Adapter抽象将变化的部分隔离出去 对于第一个场景在现实生活中太常见了,比如笔记本的电源适配器,家用电压一般是220v的,但是笔记本的输入电压一般是5v的,所以笔记本的电源线上都会有一个电源适配器用来将原本不兼容的接口(220v)转换为当前笔记…

2019年1月5日 0条评论 470点热度 1人点赞 天问 阅读全文
设计模式

【设计模式之】代理模式与动态代理技术(JDK自带与CGLIB)

代理模式也是实际开发中使用非常频繁的一个设计模式,原因还是我前面提到的,程序是用来解决实际问题的,而实际生活中代理也很常见,比如朋友圈经常看到代购的帖子,在比如在国内访问谷歌,往往需要使用vpn代理。 按照代理类的生成时期来看可以分为静态代理和动态代理。 静态代理:在程序运行前代理类的代码就已确定 动态代理:在运行时动态生成代理类,也就是代理类的字节码.class文件是在运行时才生成的。JDK已经内置了对动态代理功能的提供,即通过反射包Reflect下的Proxy类的newProxyInstance方法配合Invo…

2018年12月22日 0条评论 486点热度 1人点赞 天问 阅读全文
插件化

【插件化】开篇总述

前段时间因为工作需要开发环境安全SDK,在开发该SDK的过程中有一个子功能就是检测App是否运行在可信环境中,其中一项就是对虚拟环境的检测,也即多开/分身类App的检测。因此调研了下这类App的实现原理,发现其原理本质上就是通过插件化技术达到在多开App的沙盒环境中免安装运行用户App。检测多开App其实很简单,但是多开App背后的原理插件化却没那么简单甚至可以说是非常复杂,不过我认为也是非常值得我们学习的。首先插件化和热修复一样本身属于安卓应用层安全的范畴,另外在学习插件化的过程中我发现如果能够把插件化的原理了解…

2018年12月15日 0条评论 562点热度 8人点赞 天问 阅读全文
设计模式

【设计模式之】观察者模式

观察者模式是开发中使用非常频繁的一个模式,用的最多地方就是将UI层和业务逻辑层解耦,比如安卓中ListView控件所关联的Adapter的数据变化时通知ListView控件界面更新。观察者模式和发布订-阅模式很类似,很多开发者觉得观察者模式和发布-订阅模式是一回事,但我个人觉得可以认为观察者模式是简化版的发布-订阅模式,但实际上这2者有着本质的区别,具体的区别请看文末的说明。前者比后者要简单的多,后者多用在跨组件消息传递上,用来简化组件间的通信,如EventBus。 将UI层和业务层逻辑解耦 跨组件传递消息(此时实…

2018年12月8日 0条评论 502点热度 4人点赞 天问 阅读全文
设计模式

【设计模式之】策略模式

策略模式也是使用非常广泛的一种设计模式,因为程序往往是用来解决实际问题的,而在实际生活中很多问题往往不止一种解决方案。也就是说解决该问题可以使用不同的算法或者在不同情形下需要使用不同算法。这种场景我们就可以将不同算法抽象为不同的策略,在程序运行时根据实际情况选择不同的策略。 同一个场景/问题有多种不同解决方案。传统的做法就是使用if-else或者switch-case根据不同参数选择不同解决方案。但这种做法代码耦合度高,不易于日后的扩展。一旦随着项目推移,if-else或者switch-case部分很可能越来越臃肿…

2018年12月2日 0条评论 397点热度 1人点赞 天问 阅读全文
设计模式

【设计模式之】工厂方法模式

在讲工厂方法模式之前先来看看简单工厂模式,虽然简单工厂模式不属于23种设计模式的范畴,但是前面提到过,学习设计模式以应用为主,简单工厂模式在实际开发中使用的场景也是很多的,在Android源码和很多知名开源项目中都能看到简单工厂模式的身影。 应用场景:工厂方法模式的应用场景和简单工厂模式差不多。 工厂方法模式对于简单工厂模式而言,主要是克服了简单工厂模式在工厂类创建新的产品类的时候扩展性差的问题。比如上面的实例,如果要增加一个VolleyPlus框架,那么需要首先需要增加一个VolleyPlusClient类实现I…

2018年11月25日 0条评论 564点热度 4人点赞 天问 阅读全文
设计模式

【设计模式之】建造者模式

本文讲解的Builder模式并非设计模式中定义的经典的Builder模式(即包含指挥者类Director),因为在实际开发和android上的一些知名的开源项目中看到的都是非经典的模式。关于Builder模式的经典模式的定义可参看:https://design-patterns.readthedocs.io/zh_CN/latest/creational_patterns/builder.html 。 隔离复杂对象的创建和使用。 需要创建的类有复杂的内部结构:表现特征为:这个类包含多种不同签名的构造函数。或包含大量…

2018年11月24日 0条评论 396点热度 1人点赞 天问 阅读全文
设计模式

【设计模式之】OOP六大基本原则与单例模式

在看某些知名的Android开源项目的时候,比如Volley(个人觉得该开源项目是面向接口编程的绝佳典范,可扩展性极强,强烈推荐每一个想设计出优秀框架的人学习),OKhttp等,发现他们某些代码逻辑实现很优雅,而且可扩展性很强(表现出来的特征就是某些功能具备很强的用户自定义性),这里其实就是运用到了一些设计思想,比如OOP六大原则和设计模式等。再加上本来一直对设计模式比较感兴趣,所以后面打算系统的学习下设计模式,然后根据学习与理解整理一个设计模式系列的专题。 重在应用:也就是是说我不会过多的去讲这个设计模式的定义,…

2018年11月18日 0条评论 1034点热度 5人点赞 天问 阅读全文
NDK

【NDK开发之】使用cmake编译管理cpp文件

在安卓NDK开发之java JNI技术中已经提到过对于安卓的NDK开发而言,本质上是2大知识体系组成,一部分是java的JNI技术。另一部分就是对c/c++源文件的编译和管理。比如使用ndk-build模式对mk文件进行编译或cmake模式对CMakeList文件进行编译。新版本的Android Studio默认使用cmake对JNI代码进行管理和编译。而不在推荐使用Android.mk和Application.mk进行编译选项配置。 先来看下AS向导创建一个NDK工程之后为我们自动生成的CMakeList文件的内…

2018年10月28日 0条评论 2495点热度 5人点赞 天问 阅读全文
12345…6

天问

追梦追自由,穷则独善其身,达则兼济天下

最新 热点 随机
最新 热点 随机
【插件化】从插件化看Activity的启动流程 你真的会用View的post方法吗 【设计模式之】适配器模式 【设计模式之】代理模式与动态代理技术(JDK自带与CGLIB)
React Native编译常见问题解决和官方demo分析 安卓应用内多语言设置 python文件操作 【React Native】使用Code Push进行热更新
小伙伴们(排名不分先后)

尼古拉斯赵四

布兰柯基

 

COPYRIGHT © 2022 天问 ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang