zoukankan      html  css  js  c++  java
  • android知识杂记(二)

    记录项目中的android零碎知识点,用以备忘。

    • AsyncQueryHandler
      • 继承与handler,可以用于处理增删改(ContentProvider提供的数据)
      • 例如:query = new AsyncQueryHandler(getContentResolver()); 

        包括方法:startQuery、startInsert、startDelete、startUpdate:

        Uri uri = Sms.CONVESATION_URI; 
        query.startQuery(0, null, uri, CONVERSATION_PROJECTION, null, null, "sms.date desc");
    • windowManager.addView
      • 可以实现悬浮窗,参数为两个:前者为视图、后者为参数,参数中的WindowManager.LayoutParams.type标示该弹出视图的类型:
      • 比较常用的有:TYPE_SYSTEM_ALERT 系统提示。它总是出现在应用程序窗口之上
        TYPE_APPLICATION 普通应用功能程序窗口

      • 也可以在参数中给新增视图添加动画,用.windowAnimations = R.style.anim_view;同时在style.xml里定义anim_vew
        <style name="anim_view">
            <item name="@android:windowEnterAnimation">@anim/in</item> //在anim文件夹中定义
            <item name="@android:windowExitAnimation">@anim/out</item>
        </style>
      • 部分手机,如小米对addview有约束(权限控制),需要适配;
    • 手动打开或影藏输入法
      • EditText有焦点(focusable为true)阻止输入法弹出 

    editText=(EditText)findViewById(R.id.txtBody);
            editText.setOnTouchListener(new OnTouchListener() {             
                public boolean onTouch(View v, MotionEvent event) {  
                    editText.setInputType(InputType.TYPE_NULL); // 关闭软键盘      
                    return false;
                }
            }); 
      • 当EidtText无焦点(focusable=false)时阻止输入法弹出
    InputMethodManager imm = 
    (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(editText.getWindowToken(),
    0);
      • 如果输入法在窗口上已经显示,则隐藏,反之则显示
    imm.toggleSoftInput(0,HIDE_NOT_ALWAYS);
      • 输入法是否单开
    boolean isOpen=imm.isActive();//isOpen若返回true,则表示输入法打开
    • handler的removeMessages
      • handler 的removeMessages(int)应用,删除msg.what = int的消息。通常与sendMessageDelayed一起用。场景:比如处理按键频繁操作。
    • ANR问题
      • 提示Application Not Responding,android提示用户应用无响应,等待或者终止。
        在Android里,应用程序的响应性是由Activity Manager和WindowManager系统服务监视的 。当它监测到以下情况时,会触发ANR:
          1.在5秒内没有响应输入的事件
          2.BroadcastReceiver在10秒内没有执行完毕
        这里要注意的是启动一个新的service处理下载,但下载任务仍然要单独起,因为service也运行在主线程,能够造成ANR问题。

    • Service or Thread
      • 表面上thread可以完成service的全部工作,还不存在阻塞UI的问题。但对Android来说,service的优先级要
        高于后台挂起的activity,以及activity所创建的thread。因此,作为一个android的重要组件,它被用来执行后台任务。

    • Application应用
      • 可以在onCreate中实现一些整个APP的初始化任务,这个初始化只会被执行一次,比如广播监听
      • Application的生命周期即是Application本身,因此也可以在Application中保存一些全局变量
    • .9.png
      • .9类型的图片是android的一种特殊图片格式,它支持随意拉伸,这种拉伸不是简单的像素扩大,而是会考虑图片的内容
      • 在android中自带draw9patch.bat工具可以制作;
    • 公共UI Activity
      • 如果存在较多UI重复的界面可以提取基类activity;
      • 其思路是在基类activity实现共性界面如导航,并在布局中预留一个layout给子类的activity;
      • 在基类的activity中重写setcontentview,子类调用改接口是会将自身的布局插入父类预留的layout;
    @Override
        public void setContentView(View view) {
            mContentLayout.removeAllViews();
            mContentLayout.addView(view);
            onContentChanged();
        }

     

  • 相关阅读:
    串口通信(2)
    串口通信(1)
    extern关键字的使用
    volatile关键字的使用
    Uart串口与RS232串口的区别
    DSP5509的时钟发生器(翻译总结自TI官方文档)
    DSP中的cmd文件
    pragma伪指令
    在C语言中嵌入汇编语言
    another app is currently holding the yum lock;waiting for it to exit...
  • 原文地址:https://www.cnblogs.com/Fredric-2013/p/4643368.html
Copyright © 2011-2022 走看看