- 博客(21)
- 收藏
- 关注
原创 Android原始多渠道打包
一、原理原始多渠道打包就是个体力活,在较少渠道的时候可以使用,但是面对上千的渠道的时候,使用这种方式你会后悔当一名android开发工程师。它的原理是在应用代码中设置渠道ID,使用的时候将渠道ID设置给数据分析接口,数据分析平台通过该渠道ID分析之。其实后面多渠道方式的本质原理都是这样的,但是具体扩展方式不同而已,将在后面的分析的时候介绍。二、实现第一步:设置渠道i
2017-04-18 13:04:15 391 1
原创 SQL(四)
一、分组函数-- MAX() MIN() AVG() SUM() COUNT()SELECT MAX(salary), MIN(salary), AVG(salary), SUM(salary), COUNT(salary)FROM employees;SELECT MAX(last_name), MAX(LENGTH(last_name)), MIN(last_nam
2017-03-23 14:56:54 427
原创 SQL(三)
一、简单的查询语句1 查询全部数据SELECT * FROM emps1.1 查询ID=63的员工信息SELECT * FROMemps WHERE emp_id=63 1.2 查询姓名为Linda的员工的生日、手机号SELECT birt
2017-03-23 14:47:36 355
原创 SQL(二)
一、修改表二、插入数据方式一:#插入一条数据INSERT INTO 表名VALUES(值1,值2,值3....);#插入多条数据INSERT INTO 表名VALUES(值1,值2,值3....),(值1,值2,值3....);方式二:#插入一条数据INSERT INTO 表名 (列1, 列2,列3....)
2017-03-23 14:32:00 209
原创 SQL学习(一)
一、基本概念①基本概念 [1]记录:数据库表内容中的每一行都是一条记录 [2]字段:每条记录中的列称为字段②数据类型 [1]主键:能够唯一标识当前记录的字段,为了保证主键值的唯一性,在MySQL中可以使用自增的int型数据作为主键。 [2]MySQL中的常用数据类型 (1)int类型:使用
2017-03-23 13:57:46 297
原创 Dagger2使用
引入project的build.gradle添加dependencies { ... // 其他classpath classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' //添加apt命令 }module的build.gradle添加// 添加其他插件apply plugin:'com.ne
2017-03-22 09:27:34 270
原创 GlideCatchUtil
/** * Created by ylzx on 2017/3/10. */public class GlideCatchUtil { private static GlideCatchUtil instance; public static GlideCatchUtil getInstance() { if (null == instance) {
2017-03-13 14:41:45 278
原创 Glid简单使用(一)
一、引入项目添加依赖dependencies { compile 'com.github.bumptech.glide:glide:3.5.2' compile 'com.android.support:support-v4:22.0.0'}二、最简单加载图片Glide.with(context) .load("http://intheche
2017-03-13 07:34:33 4563
原创 Android:finished with non-zero exit value
一、Android studio 编译问题:finished with non-zero exit value 1错误日志:Error:Execution failed for task ':app:transformClassesWithDexForDebug'.> com.[Android](http://lib.csdn.net/base/15).build.api.transfor
2017-03-07 10:23:53 427
原创 Spinner监听点击事件无效
Spinner的点击事件是setOnItemSelectedListener并不是setOnClickListener()否则会报错,而且setOnItemSelectedListener默认选中第一条,每进入一次就会主动调用一次点击事件,所以只需设置一句spinner.setSelection(0,false)就行。
2017-03-03 09:12:42 3727
原创 Spinner的使用和属性详解
一、简单使用①布局 android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > android
2017-03-02 17:13:47 1487
原创 高效的使用MVP
(1)说明写mvp的时候,presenter会持有view,如果presenter有后台异步的长时间的动作,比如网络请求,这时如果返回退出了Activity,后台异步的动作不会立即停止,这里就会有内存泄漏的隐患,所以会在presenter中加入一个销毁view的方法。但是当后台的延时操作返回时,这个时候view被销毁了,如果接着去调用view的方法就 会抛出空指针异常。所以在后台的延时操作
2017-03-02 08:55:03 325
原创 MVP框架研究
1、概述MVP架构可以使代码更清晰与MVC的区别是,Presenter的出现,将Actvity视为View层,Presenter负责完成View层与Model层的交互。(1)View对应于Activity,负责View的绘制以及与用户交互(2)Model是实体模型(3)Presenter负责完成View于Model间的交互及业务逻辑而MVC架构中(1)View:
2017-03-02 08:51:19 220
原创 Android Memory定位内存泄漏
Android内存泄漏指的是进程中某些对象(垃圾对象)已经没有使用价值了,但是它们却可以直接或间接地引用到 gc roots导致无法被GC回收。无用的对象占据着内存空间,使得实际可使用内存变小,形象地说法就是内存泄漏了。泄漏有哪些危害运行性能的问题: Android在运行的时候,如果内存泄露导致其他组件可用的内存变少,一方面会使得GC的频率加剧,在发生GC的时候,所有进程都必须进行等待
2017-03-01 08:58:51 295
原创 用于Activity管理和应用程序退出
在开发中经常遇到关闭几个activity的情景,其次就是退出应用关闭所有Activity。在此文章中给出了实用的工具类。
2017-02-27 22:00:55 235
原创 字符串判断工具类
一、判断字符串//判断密码是否合格 必须大于8位,由大写字母,小写字母和数字组合public static boolean isPasswordCorrect(String password) { if (password.length() 8) { return false; } if (password.matches("\
2017-02-27 10:47:52 367
原创 EditText
一、inputType属性//电话号码 android:inputType="phone" //文本类型,多为大写、小写和数字符号。 android:inputType="none" android:inputType="text" android:inputType="textCapCharacters"//字母大写 android:in
2017-02-27 10:19:54 181
原创 黄油刀注解工具配置
黄油刀注解工具添加步骤,避免一些坑1.在build文件配置,添加applyplugin:'android-apt'//butterknifecompile 'com.jakewharton:butterknife:8.4.0'apt 'com.jakewharton:butterknife-compiler:8.4.0'如图:2.在工程项目b
2017-02-24 18:28:56 505
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人