• Android开发学习—— activity


    • 1. Activity的理解:
         1). 活动: 四大应用组件之一
         2). 作用: 提供能让用户操作并与之交互的界面
         3). 组件的特点:
            它的类必须实现特定接口或继承特定类
    需要在配置文件中配置其全类名
    它的对象不是通过new来创建的, 而是系统自动创建的
    它的对象具有一定的生命周期, 它的类中有对应的生命周期回调方法
         4). 哪些地方用到反射技术:(Android)
            a. 配置文本中配置全类名
            b. 布局文件定义标签
            c. 显式意图: Intent(Context context, Class c)
    • 2. Intent的理解
         1). 意图: 信使(Activity, Service, BroadcastReceiver三个组件间通信的信使)
         2). 分类:
                   显式: 操作当前应用自己的组件
                   隐式: 操作其它应用自己的组件
    • 3. Intent的使用:
         1). 创建:
              显式: Intent(Context context, Class activityClass)
              隐式: Intent(String action) //与Activity与<intent-filter>的action匹配
         2). 携带数据
              额外: putExtra(String key, Xxx value) 内部用map容器保存
              有特定前缀: setData(Uri data)  //tel:123123, smsto:123123
         3). 读取数据:
              额外: Xxx getXxxExtra(String key)
              有特定前缀: Uri getData()
    • 4. Activity的使用:
         1). 定义
              a. 定义一个类 extends Activity, 并重写生命周期方法
              b. 在功能清单文件中使用<activity>注册
         2). 启动
              a. 一般: startActivity(Intent intent)
              b. 带回调启动: startActivityForResult(Intent intent, int requestCode)
                   重写: onActivityResult(int requestCode, int resultCode, Intent data)
         3). 结束
              a. 一般: finish()
              b. 带结果的: setResult(int resultCode, Intent data)
    • 5. Activity的生命周期
         1). Activity界面的状态:
    运行状态: 可见也可操作
    暂停状态: 可见但不可操作
    停止状态: 不可见,但对象存在
    死亡状态: 对象不存在
         2). Activity的生命周期流程:

         onCreate() : 加载布局和初始化的工作
         onResume() : 只有经历此方法, 才进入运行状态
         onDestroy() : 在对象死亡之前, 做一些收尾或清理的工作
    • 6. TaskStack和lauchMode
         1). TaskStack
              在Android中,系统用Task Stack (Back Stack)结构来存储管理启动的Activity对象
              一个应用启动,系统就会为其创建一个对应的Task Stack来存储并管理该应用的Activity对象
              只有最上面的任务栈的栈顶的Activity才能显示在窗口中
         2). lauchMode:
             standard: 
         标准模式,每次调用startActivity()方法就会产生一个新的实例。
    singleTop: 
         如果已经有一个实例位于Activity栈的顶部时,就不产生新的实例;如果不位于栈顶,会产生一个新的实例。
    singleTask: 
         只有一个实例, 默认在当前Task中
    singleInstance: 
         只有一个实例, 创建时会新建一个栈, 且此栈中不能有其它对象
    • 设置监听的四种方式:
         1. layout中:   android:onclick=“方法名”
                             Activity中: public void 方法名(View v) {   }
         2. view.setOnclickListener(new View.OnclickListener(){})
         3. view.setOnclickListener(this)
         4. view.setOnclickListener(onclickListener成员变量)
     
     
              1). 实现一个简单功能的应用的步骤:
                   a. 外观: 分析界面组成, 定义布局文件
                   b. 行为: 编写Activity的实现
                        1). 在onCreate()中加载布局文件: setContentView(layoutId)  
                        2). 调用findViewById得到需要操作的所有视图对象并保存为成员变量
                        3). 给视图对象设置监听器(点击/长按), 在回调方法实现响应逻辑
              2). 使用隐式意图启动系统应用的界面
                   如何找到对应的Action字符串: 添加ActivityManager的Log日志, 利用系统应用源码找到对应的Activity的配置
              3). 权限: 当调用一些系统比较重要的功能时需要声明

     ##内存不足
    * 内存不足时,系统会优先杀死后台Activity所在的进程,都杀光了,如果内存还是不足,那么就会杀死暂停状态的Activity所在的进程,如果还是不够,有可能杀死前台进程
    * 如果有多个后台进程,在选择杀死的目标时,采用最近最少使用算法(LRU)

    #横竖屏的切换

    >默认情况下 ,横竖屏切换, 销毁当前的activity,重新创建一个新的activity
    > 快捷键ctrl+F11

    * Activity在横竖屏切换时会销毁重建,目的就是为了读取新的布局文件
    在一些特殊的应用程序常见下,比如游戏,不希望横竖屏切换activity被销毁重新创建
    需求:禁用掉横竖屏切换的生命周期
    1. 横竖屏写死
            android:screenOrientation="landscape"
            android:screenOrientation="portrait"

    2. 让系统的环境 不再去敏感横竖屏的切换。
        
             android:configChanges="orientation|screenSize|keyboardHidden"

  • 相关阅读:
    1020. Tree Traversals
    1001. A+B Format
    centos 各类无线网卡编译
    vim 详细配置 超全
    深夜复习strcpy函数原型竟然暗藏着这么多玄机
    第一篇博客
    strcat函数使用中出现的问题
    strcpy与strncpy工作方式及其区别
    strcpy与面试官
    linux下多线程编程
  • 原文地址:https://www.cnblogs.com/mengxiao/p/6196722.html
Copyright © 2020-2023  润新知