安卓笔记2

1 super相当于父类对象的引用,this相当于当前对象的引用;


2 方法在调用执行时,如果子类重写了父类的,就调用子类的方法,如果没有重写,在子类找不到方法,
  就会去父类里面找,父类找不到,就会再去父类的父类那里找;


3 在没有覆写父类方法和属性的情况下this跟super都是一样的。因为他在当前对象中都找不到对应的方法和属性,所以会去该对象的父类中查找。说穿了其实调用的都是父类中的属性和方法。根据方法的调用顺序的话,不写this或super的情况下,
  默认为this;
  既然没有重写,调用supper和this都一样。重写了后supper调用父类的方法,this调用子类重写的方法。属性也是一样


4 什么都不写的情况下,系统会默认调用父类的无参构造super(),写的话,该调什么就调什么;而super.method()调用的是父类的普通方法




5  布局:  


在 android 中我们常用的布局方式有这么几种:


1.LinearLayout ( 线性布局 ) :(里面只可以有一个控件,并且不能设计这个控件的位置,控件会放到左上角)


  线性布局分为水平线性和垂直线性二者的属性分别为: android:orientation= " horizontal "   android:orientation= "vertical" 。


        2.RelativeLayout ( 相对布局 ) : (里面可以放多个控件,但是一行只能放一个控件)


 附加几类 RelativeLayout 的属性供大家参考:


第一类 : 属性值为 true 或 false


android:layout_centerHrizontal                   水平居中


android:layout_centerVertical                    垂直居中


android:layout_centerInparent                 相对于父元素完全居中


android:layout_alignParentBottom              贴紧父元素的下边缘


android:layout_alignParentLeft                 贴紧父元素的左边缘


android:layout_alignParentRight                贴紧父元素的右边缘


android:layout_alignParentTop                  贴紧父元素的上边缘


android:layout_alignWithParentIfMissing   若找不到兄弟元素以父元素做参照物




第二类:属性值必须为 id 的引用名“ @id/id-name ”


android:layout_below                          在某元素的下方


android:layout_above                          在某元素的上方


android:layout_toLeftOf                       在某元素的左边


android:layout_toRightOf                     在某元素的右边


android:layout_alignTop            本元素的上边缘和某元素的的上边缘对齐


android:layout_alignLeft           本元素的左边缘和某元素的的左边缘对齐


android:layout_alignBottom         本元素的下边缘和某元素的的下边缘对齐


android:layout_alignRight          本元素的右边缘和某元素的的右边缘对齐


 


第三类:属性值为具体的像素值,如 30dip , 40px


android:layout_marginBottom              离某元素底边缘的距离


android:layout_marginLeft                 离某元素左边缘的距离


android:layout_marginRight                离某元素右边缘的距离


android:layout_marginTop                  离某元素上边缘的距离
       
        android:layout_gravity="bottom"           相对于父控件底部对齐


        android:visibility="invisible"            控件不可见,但占用空间


        android:scaleType="centerInside   Android:scaleType是控制图片如何resized/moved来匹对ImageView的size
        将图片的内容完整居中显示,通过按比例缩小或原来的size使得图片长/宽等于或小于View的长/宽


6 XlistView 下拉刷新控件


7 解析数据: jsonObject解析javabean对象,jsonArray解析json数组、集合


8 cursor(就是结果集,数据集) 游标 默认指向索引-1;如果一张表有3条数据,则cursor就有三条数据,想要获取表里的数据,则通过cursor游标移动来取值


9 可以直接在方法外、类里面去创建对象的有:集合、数组、一些假数据、不需要传任何参数的javaBean对象;不能随便在成员变量位置创建对象,尤其是带参数的;要在方法里去创建;


10 db.insert("test", null, values);//test是表名,参数二表示列名,给null就行了
   String name = cursor.getString(1);//1表示列的索引,这里我们写死了,规范的写法是根据列名来获取列的索引;


11 第三方集成文档 有时可以去开发者平台,开放平台去找;


12 Pg项目成员,TL组长,PM项目经理


13  HttpUtils请求后,服务器给我们返回的是json字符串--想要得到真实效果,我们就需要进行解析


14  android:singleLine="true"表示textView的文本成一行显示,显示不完为....


15 <!-- android:cacheColorHint="@android:color/transparent" //listView滚动过程中没有黑色背景-->
   <!-- android:divider="@null" //listView没有分割线-->
   <!-- android:fadingEdge="none" //去除顶部底部黑色背景-->
   <!-- android:listSelector="@drawable/transparent"//listView 点中没有默认颜色-->
   <!-- android:scrollbars="none" //listView没有滚动条-->


16 ViewHolder背包是ListView专用的


17 不写的话,默认是GET请求方式


18 真机分享桌面,浏览器 --设置--打开方式--


19 查找图片的属性及方法 :background,drawable,Bitmap,src,imageView


20 凡耗时的操作可以用异步方法


21 同步方法与异步方法:同步方法需要放在子线程中执行


22 V7包里面自带V4包


23 在sdk下的tools目录下cmd 运行 adb install 应用apk路径(dos命令安装apk)


24 down代码出错 可以好的项目的gradle 和.gradle拷贝到你down的项目中


25 图片放在mipmap中比放在drwable中效率要高,mipmap下采用的是动态物理加载技术,公司里一般情况下会放在mipmap-hdpi文件夹下


26 .9图片只能放在drawble文件夹下


27 在清单文件下设置界面透明的属性 android:theme="@android:style/Theme.Translucent"


28 设置ArrayAapter适配器;用的话通常只用系统默认条目,text文本条目


29 将Activity设置成窗口样式的属性 在清单文件中Activity下添加"@android:style/Theme.Dialog


30 相对布局完全具有帧布局的特点


31 Autolayout 自动化布局 可以自动适配屏幕


32 支付宝支付方式有两种:方式一:依赖客户端App;方式二:依赖智能SDK,两者的唯一区别是:把App替换成了智能SDK 
   支付宝支付流程:几个关键字  电商App、电商服务器、支付宝App、支付宝服务器


 下面依赖客户端App流程:


 1.电商APP处理结算信息--2.提交结算信息,提交给电商服务器---3.电商服务器生成订单信息,然后返回给电商App
   --电商App这时发送支付请求,收集重要信息(1.订单信息3.电商公司支付宝账号4.电商服务器通知连接)--4.发起支付请求(携带数据134),
 发起请求之前需要判断是否安装支付宝app,如果没有安装则提示安装--5.安装的话则就访问到了支付宝app,判断是否登陆(登录的话,则收集到重要信息:2.用户的支付宝账号和密码)


 6.然后支付宝app向支付宝服务器发送支付请求携带数据(1234)--7.然后支付宝服务器给支付宝app返回支付结果--8.根据电商服务器的通知连接,通知电商服务器支付结果--


 9.电商服务器作出响应给电商app返回支付结果--10.然后电商服务器处理发货逻辑


  注意:支付宝服务器会把钱打给电商服务器,它怕电商服务器赖账就,所以第8部就有了重试机制:即每隔一段时间通知一次电商服务器,直到收到电商服务器的反馈为止(避免赖账),在
  没有发货之前,电商服务器会向支付宝服务器发送收到支付结果通知的反馈,说明我收到你的通知了


33  二维码扫描处理流程分为几个步骤:


 (1)初始化相机,设置一些相机参数; 
 (2)绑定SurfaceView,在SurfaceView上显示预览图像; 
 (3)获取相机的一帧图像; 
 (4)对图像进行一定的预处理,只保留亮度信息,成为灰度图像;
 (5)对灰度图像进行二维码解析,解析成功进入下一步,不成功回到第③步; 
 (6)返回解析结果并退出。


34 内存泄露 :IO流要关闭,该释放的资源一定要释放,不用的对象要致为null。


35. 进程间的通信方式:四大组件都可以完成进程间的通信;AIDL即是服务;


36 使用三级缓存的好处:
   节省流量;提高软件的流畅度;提高客户的体验度


37 数据缓存到内存里效率更高、更流畅,内存里的数据是直接加载好的,想用直接拿就可以了;


38 第三方登录原理:
              对外提供的有一个统一的接口,第三方只提供账号,不会提供密码;


39 LBS 摇一摇的集成;


40 利用线程池,方便管理、效率高


41 http 不安全网络请求协议;http+ssl=https安全网络请求协议


42 fengltxx、hong yang的博客


43 自定义控件:步骤


   写个类继承View/ViewGrow ,总共要实现两个构造方法一个参数的是在代码中直接new创建对象,两个参数的是在布局文件中
 声明该View,由系统自动调用该函数创建对象,然后重写三个方法:onMeasure()测量控件,指定大小方法,onLayout()指定控件位置方法,onDraw(Canvans canvas)绘制控件的方法


44 属性动画不是真的做动画,只不过改变的是控件的属性


45 安卓网络图片加载机制:
                  
                        利用三级缓存:内存缓存、本地缓存、网络缓存;将图片(bitmap)缓存到内存里,在V4包里的Lrucache(key,value);底层是LinkedHashMap,有个Lru算法,根据算法去操作图片,内存缓存里只保留最近使用的和使用频率
比较高的图片,移除不经常使用的图片;本地缓存:是指将图片以文件的形式存储到本地缓存(Sd卡/手机内存),然后对图片文件名称imageurl进行MD5
加密,起到加密和防止文件名称包含特殊字符;


图片的加载逻辑:优先使用速度最快的缓存
(1)先从内存中获取,如果获取到,直接展示,如果获取不到,再从本地缓存获取
(2)内存缓存没有,从本地缓存获取,如果获取到,加载到内存里,放到内存缓存里,然后展示,如果获取不到,最后从网络缓存获取
(3)从网络缓存获取,如果获取到,则加载到内存缓存里,然后存储到本地,最后展示出来
注意:Lrucache就是把bitmap图片存储到内存里面,lrucache的内存空间 == app运行时内存1/8,八分之一是经验之谈,然后再根据Lrucache对象从内存村里获取bitmap图片


46 缓存:不用连接网络就能获取到的资源,应用的运行内存一般为16M,本地缓存一般限制为几百M


47 Viewpager嵌套,子Viewpager不能左右滑动 (低版本的v4包不支持,高版本v4已经修复,即把低版本V4包更换为高版本的V4包)
   更换高版本的v4步骤:
app.build.gradle去掉v7
libs添加v4,add as library
SlidingMenu_library的build.gradle的v4 修改为provided

api错误,修复.


             喊爹:


getParent().requestDisallowInterceptTouchEvent(true);//请求父view别中断触摸事件
                        getParent().requestDisallowInterceptTouchEvent(false);//把事件交给父亲

第一张图片,向右滑动,交由父亲处理
最后一张图片,向左滑动,交由父亲处理
其他,自己处理


    
   
48 轮播图的viewPager,是一个会滚动的viewpager继承ViewPager的


49 是javabean 标志的就定义一个类,三个花花的就是一个类


50 一个view对象只能同时有一个父view,意思只能认一个爹


51  /***
     * 从父view 中移除当前view对象
     * @param view
     */
    public static void removeFromParent(View view){
        if (view != null) {
            ViewParent parent = view.getParent();
            if (parent != null && parent instanceof ViewGroup) {//instanceof代表parent属 ViewGroup类型
                ViewGroup group = (ViewGroup) parent;
                // loadingpage 从父view 中移除  断绝关系
                group.removeView(view);
            }
        }
    }


52  单例中,饿汉式是线程安全的 


53  有参数的构造方法是用来在创建对象时,给对象的成员变量赋初始值的


54 Fragment是一个具有生命周期的view对象


55 联网用一个线程池,读写文件用一个线程池


56 protocol 协议


57 javabean一般存储到数据库中;javabean序列化之后就变成了字符串,可以存储到SP中,但取出时比较麻烦


   一些简单的数据我们可以存储到SP中,图片一般的存储到本地文件


58 登录token是一个令牌、一个秘钥,是帮我们实现自动登录的,就是一串字符串,token是有时效性的


59 NoHttp的内部是HttpUrlConnection


60 MVP最大的一个特点,不允许View和Model进行交互,只能通过P做沟通,主要是通过接口的方式管理所有的功能


61 微信摇一摇  当用户晃动手机时, 会触发加速传感器, 此时加速传感器会调用相应接口供我们使用, 此时我们可以做一些相应的动画效果,
   震动效果和声音效果. 大致思路就是这样. 


62 第三方开发者所用的接口密钥:Apply Key ,App secret就相当于用户名。


63 Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,
   以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。


64 Android中图片的存在形式:
  1:文件形式:二进制形式存在与硬盘中。 
  2:流的形式:二进制形式存在与内存中。 
  3:Bitmap的形式
  三种形式的区别: 
  文件形式和流的形式:对图片体积大小并没有影响。也就是说,如果你手机SD卡上的图片通过流的形式读到内存中,在内存中的大小也是原图的大小。 
  注意:不是Bitmap的形式。 
  Bitmap的形式:图片占用的内存会瞬间变大。 


65 响应式编程是利用一种扩展的观察者模式来实现的,好处简化逻辑,异步操作,被观察者就是触发事件,生产事件,观察者是事件触发之后,将要发生的行为
   订阅是把观察者和被观察者关联起来,Observable就可以在需要的时候来通知Observer。


66 HTTPS:超文本安全传输协议,和HTTP相比,多了一个SSL/TSL的认证过程,端口为443


67  如果是全后台的工作,使用Service,结果的提示可以使用Notification(通知栏提示)。
    如果是异步工作,工作结束后需要更新UI,那么最好使用Thread或者AsyncTask
 
6 8 getCachDir().getPath()获取缓存路径


69 ThreadPoolManager 线程池 


70 BMP格式的图片就是Bitmap的简写


71 只要比手机屏幕大的图片就可以称为是大图片;压缩图片: 根据屏幕的宽高和图片的宽高按照比例去压缩图片
   这个压缩比例目的就是为了不让图片超出最大内存,所以只要数字范围对了,都可以满足条件,但是什么数字最合适  还是通过计算最合适 
   ImageView本身就自带一定的压缩功能,前提是在图片的内存不超过堆内存上限时才会帮你压缩


72 Bitmap bitmap = BitmapFactory.decodeFile("/mnt/sdcard/dog.jpg");//根据SD卡路径获取本地图片位图对象 (Environmet.getExternalStorageDirectory().getPath()+图片名称)//获取sd卡的路径
   注意:getAbsolutePath()返回抽象路径名的绝对路径名字符串 ;getPath():
   返回的是定义时的路径,可能是相对路径,也可能是绝对路径,这个取决于定义时用的是相对路径还是绝对路径。如果定义时用的是绝对路径,那么使用getPath()返回的结果跟用getAbsolutePath()返回的结果一样


   iv.setImageBitmap(bitmap);//把图片显示在控件里

   Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.tomcat);  //根据资源文件拿到Bitmap对象
   如果在服务器的话就要根据流去拿bitmap对象了


73 向Sd卡写数据或从Sd卡读数据 都需要分别加上读sd卡和写sd卡的权限


74 缩放加载大图片 (重点)


   1、去加载图片前,不去真正的加载到内存当中,inJustDecodesBounds = true 而是去获取图片的一些附属信息, 比如宽高


   2、 拿到宽高之后进行压缩,如果说是全屏显示,就和屏幕的宽高计算;如果说显示区域是屏幕的一部分,那么就和这部分的宽高进行计算压缩比例
   
 (计算压缩比例的时候,要具体和你要显示的大小区域进行计算)


  3 分别按照宽高进行压缩比例计算,按照比例大的那个值进行缩放  能够节省内存多一点


  4、 拿到比例赋值给inSampleSize 将  inJustDecodesBounds = false,再去真正的加载图片到内存中


75 什么时候进行图片压缩,当你的图片的宽或高大于你控件的宽或高的时候,进行压缩


76 public void save(View view) {

// 将图片保存在SD卡上,即写在SD卡上
FileOutputStream fos;
try {
fos = new FileOutputStream("/mnt/sdcard/hahahehe.jpg");
boolean isSuccess = copyBitmap.compress(CompressFormat.JPEG, 100, fos);
if(isSuccess){
Toast.makeText(this, "保存成功", 0).show();
}else{
Toast.makeText(this, "保存失败", 0).show();
}

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}




77 怎么打造一款成功的app   
   1.做出一些有新意、实用性高并且能够持久吸引用户注意的应用程序 2.你必须保证App的实用性3.提供简明好用的用户界面,你可以对现有的技术加以利用并进一步改善和优化
   4.先看一看App Store上同种类的其他App,并且总结出可以进行提升的角度和方面,思考应以何种方式、途径为用户提供更优质的服务。
   5.App图标和用户界面的背景声音等细节真的非常重要,你可千万别小看这些不起眼的方面,因为真正把每一点都做好,会收获意想不到的效果


78 缓存本地数据有两种 1.把从服务器获取的json数据解析成java类,写到数据库中 2.可以直接把从服务器获取的json数据写在文件里,也可以写到数据库里


79 向SD卡写数据时,如果路径自己定义出来的就不用加写SD卡的权限,如果是使用系统的API来获取的路径,则必须要加上了


80 如果sd损坏的情况下可以把缓存数据缓存到 /data/data/包名/cache/cache目录下,第一个cache图片文件都可以缓存,第二个自定义的,只缓存文本
  context .getContext().getCacheDir().getAbsolutePath() //获取的为/data/data/包名/cache


81 Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);//表示sd卡可用


82 一键分享的原理:点击分享平台时,会把你应用的数据,及分享平台的账号和密码获取到,首先,判断你是否安装了该平台的应用,安装的话,判断是否登录,没有登录的话
   提示登录,没有安装的话,会打开该平台的网页登陆页面供你登录


83 断点续传原理:记录你上次下载的多少,写到临时文件里,记录你的下载进度,下一次再下载则把上次下载的从临时文件里读出来,然后从当前位置再开始下,新的下载位置即是原本开始位置+上一次下载的总字节数 ,然后
   拿着新的下载位置重新请求下载区间,就实现从新的下载位置开始下载了 


84 面向holder编程 把Activity中的代码简化,把一个大的复杂的功能或者页面分成几个小的功能分别去实现,每个小功能功能用frameLaout去占位置,让holder来维护者,比如一些findviewById,设置数据的操作都放在holder中,用holder来维护着contentview
   对象,创建一个holder包,创建一个基类hoderBase


85 搜索功能:输入搜索内容,此时去数据库查询数据,会返回来一个cursor对象,然后来填充listview把数据显示出来,点击搜索按钮跳转把内容显示到Activity上
   这个是数据库实现的.在数据库进行搜索的时候可以使用类似
  show variables like '%mohu%';这样的语句进行查询,这个一般是后台来处理的.我们把关键字给后台,后台进行查询,然后把结果返回给我们客户端,比如如果需要查询,我们把关键字给后台,他们给我们结果.




86 app优化:(1)在后台取消一些线程中的动作(2)保持响应不发生ANR(3)在线程中初始化查询操作(4)合理使用static成员(5)尽量避免使用枚举类型(6)避免创建不必要的对象(7)避免依赖注入框架(8)小心使用外部依赖包
  (9)避免使用浮点类型(10)避免在Aplacation的onCreat()方法里做一些初始化的操作


87 AIDL的应用场景:


88. 垃圾回收可以有效的防止内存泄露,有效的使用空闲的内存。垃圾收集器系统有自己的一套方案来判断哪个内存块是应该被回收的,哪个是不符合要求暂不回收的。垃圾收集器在一个Java程序中的执行是自动的,不能强制执行,即使程序员能明确地判断出有一块内存已经无用了,是应该回收的,
    程序员也不能强制垃圾收集器回收该内存块。程序员唯一能做的就是通过调用System. gc 方法来"建议"执行垃圾收集器,但其是否可以执行,什么时候执行却都是不可知的。
       垃圾收集器判断一个对象的内存空间是否无用的标准是:如果该对象不能再被程序中任何一个"活动的部分"所引用,此时我们就说,该对象的内存空间已经无用。所谓"活动的部分",是指程序中某部分参与程序的调用,正在执行过程中,尚未执行完毕。
       当一个方法执行完毕,其中的局部变量就会超出使用范围,此时可以被当作垃圾收集,但以后每当该方法再次被调用时,其中的局部变量便会被重新创建。


89 手机自带的上弹菜单;操作代码要在Activity的onCreateOptionsMenu(Menu menu)方法中写 ;此方法是当菜单条目被选中调用的方法onOptionsItemSelected(MenuItem item)


90 内存泄漏 (1)单例模式的静态方法 ,用上下文时必须是全局的(2)for循环设置好值后,或不用的对象在用完后一定要致为null(3)比如说在这个页面退出后,集合不用了,在不用的地方记得清空clea();(4)界面退出时,记得在destory()方法里调用 System.gc();可能会加快
   java的垃圾回收机制的回收 (5)当bitmap位图不用时,尽量手动调用bitmap.recycle()方法来释放不用的内存,来加快垃圾回收机制的回收


注意: 1. Bitmap 对象只能通过BitmapFactory创建,BitmapFactory提供了静态方法decodeXXXXX(****)方法分别将五种资源加载成Bitmap对象中。
       2. BitmapFactory生成Bitmap对象是调用底层的JNI接口,所以在加载Bitmap图片这个过程中会包含两部分的内存区域,Java部分和C部分。  Java部分的会通过系统的垃圾回收机制自动回收,但是C部分的就不能自动回收了,所以Bitmap使用结束要调用recycle()方法释放C部分的内存。recycle()也是调用JNI接口实现。
       3. 读取Bitmap位图时,Android系统分配给虚拟机中的堆大小只有8M,所以Bitmap对象用完一定的及时回收。


91 购物车小圆点: badgeview其实就是红色提示消息数量的一个textview,我们可以对他的位置,颜色,动画进行设置


92 进程调试bug


93 若不是用系统提供的API,直接使用sql语句会有全角和半角英文和中文空格之分;


94  MVC:M主要是数据的存储,V主要是activity,用来做页面的显示和事件的处理,C是具体的逻辑类,复杂的逻辑和对model的管理都由它来做


100 ViewPager 页面切换的监听 addOnPageChangeListener(...)参数以匿名内部类实现,有一个页面完成后调用的方法,有一个页面切换状态调用的方法


101 轮播图自动轮播,当同一个消息循环发送的话 会形成轮播图滚动特别快的现象,所以我们可以把轮播的时间间隔设置长一些,主要原因是缓存没有屏蔽掉


102 sp中也是可以存储javabean的,但是javabean是要序列化的,序列化即是序列化成了字符串,集合和javabean都可以存储到数据库


103 利用 HttpURLConnection
                     //从服务器获取图片流
                     InputStream inputStream = httpURLConnection.getInputStream();
                     Bitmap isBitmap = BitmapFactory.decodeStream(inputStream);//根据输入流拿到位图对象
                     lruCache.put(imageUrl,isBitmap);//加载到内存中
                     imageView.setImageBitmap(isBitmap);//把图片设置在控件上    龙眠大道 1号线




104 解析Json 中有,你把Json解析成什么类型的类;JSON百度百科,JSON中文网,JSON格式校验工厂


105 公司做O2o移动电商app ,率先拥有企业专属的行业APP,拥有精英的技术专业人才,并且业务极其广泛,像悦TV、支持超过20个行业的手机APP解决方案:像 移动电商、服装配饰、酒店宾馆、、教育培训、医疗健康、餐饮美食、金融理财、地产楼盘、旅游景点、金华佗医生 中医生调理问诊平台,汇食天下,居家养老等成功案例,平时对这方面的知识资讯特别感兴趣,并且这方面的
    经验相对来说也比较丰富。对公司的企业文化,企业实力,企业规模、企业理念,都觉得很是完美,前景是无限光明;


106 ListView一般是要有集合来配合使用的


107 异步任务AsyncTask:这个类有三个泛型1.执行任务需要传递的数据类型.2.下载进度的数据类型3.下载结束之后返回结果的数据类型;它方法的执行顺序,onPreExecute方法在主线程中执行,在下载之前弹出下载进度条提示用户---doInBackground(可变参数Params...) 方法主要在子线程中执行耗时操作,Params参数是execute(参数)方法传过来的
    --onProgressUpdate(Progress...) 运行于UI线程。如果在doInBackground(Params...) 中使用了publishProgress(Progress...),就会触发这个方法。在这里可以对进度条控件根据进度值做出具体的响应。--onPostExecute(Result) ,Result是doInBackground方法返回的结果;
   调用execute(里面是可变参数,和执行任务需要传递的数据类型是一样的)方法是开始执行异步任务


108 集成环信步骤 1.在环信的后台填一些 注册信息, 企业ID只限于字母、数字 2、下载SDK,然后解压 3、配置工程环境
    在自行开发的应用中,集成环信聊天需要把 libs 文件夹下的 jar 及 so 文件复制到你的项目的 libs 文件夹相应位置,如果不需要语音和视频通话功能,导入libs.without.audio 下的文件即可   4.第四步,配置代码环境,在清单文件 AndroidManifest.xml 里加入权限,以及写上你注册的 AppKey。


109  android资源管理和apk打包流程
    流程概述:
   1、打包资源文件,生成R.java文件
   2、处理aidl文件,生成相应java 文件
   3、编译工程源代码,生成相应class 文件
   4、转换所有class文件,生成classes.dex文件
   5、打包生成apk
   6、对apk文件进行签名
   7、对签名后的apk文件进行对其处理


110 友盟统计 :统计的有新增用户,活跃用户,累计用户


112 多渠道打包 配置在清单文件里,根据不同的标记,去打包到不同的应用市场,友盟的多渠道打包是在清单文件中+meta-data,友盟会自动上传,
    平台少的话,就不用多渠道打包了,直接AS或Eclipse,导出就可以了,ant命令打包,谷歌多推出的Gradle多渠道打包工具,直接用AS就可以
    还有友盟的酷传多渠道打包工具,美团快速打包                  


113 热修复和增量更新的差别就是 热修复是热补丁动态修复框架,可以直接在原有apk基础上修复bug,而增量更新需要更新之后安装的;


114 在内容提供者中获取上下文通过getContext()方法


115 jsonArray里面可以包含jsonobject


116 在线JSON转Java Bean代码(pojo)- aTool在线工具


117  android:screenOrientation="landscape">在activity节点上加,横屏的activity


118  getSupportActionBar().hide();加在setContentView(R.layout.activity_main)下面,去掉 AppCompatActivity标题栏


119  imageview和imagebutton才有src属性


120  ArrayList的rome()方法移除一个元素


121  setContentView()里面可以添加一个自定义控件的对象


122  服务和Activity都可以发送广播


123 
       public void handleMessage (Message msg)
       子类对象通过该方法接收信息
       public final boolean sendEmptyMessage (int what)
       发送一个只含有what值的消息
       public final boolean sendMessage (Message msg)
       发送消息到Handler,通过handleMessage方法接收
       public final boolean hasMessages (int what)
       监测消息队列中是否还有what值的消息
       public final boolean post (Runnable r)
       将一个线程添加到消息队列


124 android:singleLine="true"
    如果和layout_width一起使用,当文本不能全部显示时,后面用“…”来表示。如 android:text="test_ singleLine " android:singleLine="true" android:layout_width="20dp"
    将只显示“t…”。
    如果不设置singleLine或者设置为false,文本将自动换行 


125 在TextView 和 EditText中,可以使用ellipsize来设置文字溢出隐藏,如:“一段很长的文本...”
    android:ellipsize = "middle" 省略号在中间


126 EditText监听数据的变化使用watcherText


127 recycleview 带你定制各种首页


128 Charles抓包工具


129 invalidate();//在主线程中调用系统方法刷新UI或刷新自定义view
    postInvalidate();//在子线程中调用系统方法刷新UI或刷新自定义view


   *******1.dialog 弹出多个问题
       2.音量条 静音图标显示的修改 
       3.dialog焦点的获取 


130 TabLayout 的用法


131 .异步加载的好处,提高用户体验度,在加载数据的时候,UI不发生卡顿的现象,


132.在应用中自定义一个view,需要获取这个view的布局,需要用到


    (LinearLayout) LayoutInflater.from(context).inflate(R.layout.contentitem, null);


    这个方法,一般的资料中的第二个参数会是一个null。通常情况下没有问题,但是如果我想给这个view设置一个对应的类,然后通过这个类来操作的话就会出问题。
    如果将
   (LinearLayout) LayoutInflater.from(context).inflate(R.layout.contentitem, null);


   修改为
   (LinearLayout) LayoutInflater.from(context).inflate(R.layout.contentitem, this);显示就会正常


133 StringBuffer是线程安全的,而StringBuilder不是线程安全的


134 嵌套事件,抢焦点事件   Applacation 对象崩溃  类型转换异常 listview 复用历史对象错乱 


135 代办:刷新的实现,数据库,购物车,线程池,集成第三方,JNI
 













  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值