zoukankan      html  css  js  c++  java
  • 周报_2013第04周(2013/01/202013/01/26)

    2013.01.21

    X Mobile Desktop – Android

     

    Activity的生命周期及构造函数

           在深入了解Activity之前,我们先要知道一下MVC设计模式,在JAVAEE 中MVC设计模式已经很经典了,而且分的也比较清晰了,但是在Android中,好多人对MVC在Android开发中的应用不是很清楚,下面我就先来介绍一下MVC在Android开发中的应用:
           M(Model 模型):Model是应用程序的主体部分,所有的业务逻辑都应该写在这里,在Android中Model层与JavaEE中的变化不大,如:对数据库的操作,对网络等的操作都放在该层(但不是说它们都放在同一个包中,可以分开放,但它们统称为Model层)。
           V(View 视图):是应用程序中负责生成用户界面的部分,也是在整个MVC架构中用户唯一可以看到的一层,接收用户输入,显示处理结果;在Android应用中一般采用XML文件里德界面的描述,使用的时候可以非常方便的引入,当然也可以使用JavaScript+Html等方式作为View。
           C(Controller控制层)android的控制层的重任就要落在众多的activity的肩上了,所以在这里就要建议大家不要在activity中实现业务逻辑,应由Model处理。

    Activity生命周期图

    Activity 的生命周期是被以下的函数控制的:
    public class Activity extends ApplicationContext {
          protected void onCreate(Bundle icicle);
          protected void onStart();
          protected void onRestart();
          protected void onResume();
          protected void onFreeze(Bundle outIcicle);
          protected void onPause();
          protected void onStop();
          protected void onDestroy();
    }
    onCreate(Bundle) 函数是你进行初始化的地方,这个也是执行setContentView(View)函数的地方,setContentView(View)函数可以传入一个由XML编制的UI界面,可以使UI和具体实现完全分离。
    onPause()函数是处理用户离开当前 Activity 的地方。更重要的是,任何在当前Activity中的任何改变都要在这个函数中提交。


    Activity有四种状态:
           活动状态,当Activity处于Stack(栈)顶时,就是手机当前的现实屏幕,这是 Activity就处于activity或者运行状态。
           运行但是失去焦点,当Activity还处于运行状态时,但是屏幕是有另外一个Activity处于文档处于焦点状态,当前的Activity就处于pause。
           停止,当Activity被另一个Activity完全覆盖的时候,就被停止了,其实就是虽然在运行,但是用户却看不见。
           结束,当Activity处于pause或者stop时,系统可以结束 Activity,回收资源,这是Activity就是处于结束状态了。
           处于结束状态的是Activity,如果要使用户可见,只要重启才可以。

    Activity的响应时间
           当前Activity所在的线程为主线程,它的响应时间为5秒,如果在当前运行的Activity中进行耗时的操作且响应时间起过5秒,那么程序就会报ANR错误。所以,这也是不建议在Activity中写太多复杂代码的原因之一。
           当然,有些代码只能写在Activity中,不然就运行不了(它们不是生命周期方法),比如你想要获得android系统或者硬件一的些信息,就必须在Activity中写出来,如果单独写一个工具类获得不了。

    使用Application存储全局数据

    AndroidManifest.xml's <application> tag

    android entrypoint: application::main() – onCreate()

    内存溢出

    优化Dalvik虚拟机的堆内存分配

    VMRuntime.getRuntime().setTargetHeapUtilization

    JAVA Annotation

    deprecated

    @SuppressWarnings("deprecation")

    JAVA 创建多线程

    implements Runnable 任务线程

    extends Thread 工作者线程

    synchronized 多线程同步锁

    JAVA 泛型Class动态调用

    Class.forName(str_cls_name)

    Class<?>.getMethod(str_method_name)

    if(!Method.isAccessible())

    {

    Method.setAccessible(true);

    }

    object = Method.invoke(cls, object… args);

    if(!Method.isAccessible())

    {

    Method.setAccessible(false);

    }

    Object obj = ReflectionUtils.invokeMethod(null, null, "android.os.Process", null, "getFreeMemory");

    Object vmRuntime = ReflectionUtils.invokeMethod(null, null, "dalvik.system.VMRuntime", null, "getRuntime");

    Object obj = ReflectionUtils.invokeMethod(null, vmRuntime , null, null, "getExternalBytesAllocated");

    Object obj = ReflectionUtils.invokeMethod(null, vmRuntime , null, null, "getMinimumHeapSize");

    // 获取预加载的内存大小

    Field = ReflectionUtils.getDeclaredField(Resources.class, "sPreloadedDrawables");

    Field = cls.getDeclaredField(fieldName);

    if(!field.isAccessible())

    {

    field.setAccessible(true);

    }

    object = field.get(object);

    if(!field.isAccessible())

    {

    field.setAccessible(false);

    }

    LongSparseArray<?> arr = (LongSparseArray<?>) object;

    System.gc();

    -----------------------------------------------------------------------

    个体与交互 胜过 过程与工具

    可以工作的软件 胜过 面面俱到的文档

    客户协作 胜过 合同谈判

    响应变化 胜过 遵循计划

    -----------------------------------------------------------------------

    软件产品研发部 李树鹏

    大连启明海通信息技术有限公司

    地址:大连市高新技术产业园区信达街57号

    手机:13942696565

    =========================
     

  • 相关阅读:
    VB中Null、Empty、Nothing及vbNullString的区别
    hs_err_pidXXX.log 解读
    测试Windows Live Writer——开博
    BCPC2021预赛
    软件设计模式之策略模式(Strategy) 壹
    留言板 壹
    友链 壹
    正则表达式练习 壹
    SpringBoot+Mybatis+自定义注解+Atomikos+实现多源数据库切换和分布式事务
    Dependency failed for File System Check on /dev/vdb1 服务器配置升级
  • 原文地址:https://www.cnblogs.com/DancingFish/p/2872862.html
Copyright © 2011-2022 走看看