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"

 

posted @ 2016-12-19 11:59  蒙小米  阅读(279)  评论(2编辑  收藏  举报