dto层与model层的区别 Model层是面向业务的,我们是通过业务来定义Model的。而DTO是面向界面UI的,是通过UI的需求来定义的。 通过DTO我们实现了表现层与Model之间的解耦,表现层不引用Model。如果开发过程中我们的模型改变了,而界面没变,我们就只需要改Model而不需要去改表现层中的东西。 需要了解的是,数据传输对象DTO本身并不是业务对象。数据传输对象是根据UI的需求进行设计的,而不 是根据
如何在程序里动态更改app中的icon 原理:1. activity-alias2. getApplicationContext().getPackageManager().setComponentEnabledSetting(getComponentName()|new ComponentName(getBaseContext(),"com.example.demo.TestActivity"),PackageManager.COMPO
Android基础知识 AsyncTask使用在哪些场景?它的缺陷是什么?如何解决? AsyncTask 运用的场景就是我们需要进行一些耗时的操作,耗时操作完成后更新主线程,或者在操作过程中对主线程的UI进行更新。 缺陷:AsyncTask中维护着一个长度为128的线程池,同时可以执行5个工作线程,还有一个缓冲队列,当线程池中已有128个线程,缓冲队列已满时,如果此时向线程提交任务,将会抛出RejectedEx
activity的生命周期 onCreate :表示Activity正在被创建。在这里可以做一些初始化的工作。onRestart :表示Activity正在重新启动。当当前Activity从不可见重新变成可见状态。onStart :表示Activity正在被启动。已经可见,但不在前台,无法交互。onResume :表示Activity已经可见,并且出现在前台可以交互。onPause :表示Activity正在停止。在这
Looper,Handler,Message Queue和线程之间的那些事 andriod提供了 Handler 和 Looper 来满足线程间的通信。 Handler 先进先出原则。 Looper 类用来管理特定线程内对象之间的消息交换 (MessageExchange) 。 1) Looper: 一个线程可以产生一个 Looper 对象,由它来管理此线程里的 MessageQueue( 消息队列 ) 。 2) Handler: 你可以构造 Handler
Android中四种进程的重要顺序 前台进程(foreground)目前正在屏幕上显示的进程和一些系统进程。举例来说,Dialer Storage,Google Search等系统进程就是前台进程;再举例来说,当你运行一个程序,如浏览器,当浏览器界面在前台显示时,浏览器属于前台进程(foreground),但一旦你按home回到主界面,浏览器就变成了后台程序(background)。 我们最不希望终止的进程就是前台进程可见进程(vi
URI、URL与URN的关系 URIURI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源URLURL是uniform resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源URNURN,uniform resource name,统一资源命名,是通过名字来标识资源,比如mailto:java
uiautomator自动化测试 module:appapply plugin: 'com.android.application' 2 3 android { 4 compileSdkVersion 23 5 buildToolsVersion "23.0.2" 6 7 defaultConfig { 8 //不要遗漏这句话 9 testInstrumen
service详解 1. 什么是serviceService是一个可以在后台执行长时间操作而不使用用户界面的应用组件。那么问题来了,既然它不使用用户界面,那么它怎么知道应该什么时候开始执行什么操作呢?答案是——它可以与其他的引用组件形成一些联系,从而可以根据其传来的信息在合适的时候执行合适的操作。一般来讲,这种联系分为两种:startService()以及bindService()。这两种联系都可以使得一个serv
Android清单文件属性大全 android:allowTaskReparenting是否允许activity更换从属的任务,比如从短信息任务 切换到浏览器任务。android:alwaysRetainTaskState是否保留状态不变, 比如切换回home, 再从新打开, activity处于最后的状态android:clearTaskOnLanunch比如 P 是 activity, Q 是被P 触发的 activity
gradle文件详细介绍 项目空间build.gradle文件:// Top-level build file where you can add configuration options common to all sub-projects/modules. /** * 项目空间的编译环境 */ buildscript { /** * 当前仓库源 */ re
android中自动生成parcelable 在Android studio中安装android parcelable code generator 插件 书写自己的目标类public class DemoParcelable { String aString; int aInt; double aDouble; HashMap<String, String> aHashMap; ArrayList<
android之aidl研究(2) 如何使用aidl文件来完成跨进程通信在进行跨进程通信的时候,在AIDL中定义的方法里包含非默认支持的数据类型与否,我们要进行的操作是不一样的。如果不包含,那么我们只需要编写一个AIDL文件,如果包含,那么我们通常需要写 n+1 个AIDL文件( n 为非默认支持的数据类型的种类数)——显然,包含的情况要复杂一些。所以我接下来将只介绍AIDL文件中包含非默认支持的数据类型的情况,至于另一种简单些的情况
android之aidl研究(1) 概述AIDL是一个缩写,全称是Android Interface Definition Language,也就是Android接口定义语言。是的,首先我们知道的第一点就是:AIDL是一种语言为什么要设计这门语言设计这门语言的目的是为了实现进程间通信,尤其是在涉及多进程并发情况下的进程间通信。每一个进程都有自己的Dalvik VM实例,都有自己的一块独立的内存,都在自己的内存上存储自己的数据,执行着自
gradle基本概念 红色标记部分从上到下来一步步分析9GAG/app/build.gradle// 声明是Android程序apply plugin: 'com.android.application'android { // 编译SDK的版本 compileSdkVersion 21 // build tools的版本 buildToolsVersion "21.1.1"
web前端之Doctype declarations html5 template<!DOCTYPE html><html><head> <title>An HTML standard template</title> <meta charset="utf-8" /></head><body> … Your HTML content here …</body></html>
前端代码整洁原则 DOCTYPE的声明字符集和编码字符正确的代码缩进外链你的CSS样式和Javascript脚本在制作web页面中,尽量将你的CSS样式和javascript脚本单独放在一个文件中,然后通过链接的方式引用这些文件,这样做的最大好处是,方便你的样式和脚本的管理与修改。正确的标签嵌套删除不必要的标签使用更好的命名那么定义一个好的名就很得要了,不但自己能看懂你的代码,而且别人也能轻松读懂你的代码,
程序员们的时间法则 设定目标:长期和短期想要生活变的更好,首先应该知道该怎么做才会更好?下个星期、下个季度、未来两年甚至未来20年,你会在哪里(如果你很年轻,必须决定你想要什么?确定你的追求所在!)。善待计划,勇于执行计划只有合理的去计划,才能达到令人满意的结果!有时我坐下来思考,仅仅只是坐着思考如果你发现自己处于混乱的状态,那么可以换个事情做做,转移一下焦点,比如站在窗前看看外面或者放松放松双眼。如果不能计划,只能跟