笔记_第二章

第二章

  • 创建菜单

    • res下新建menu文件夹,在menu下新建Menu resource file。

    • 使用<item id = "" title = "”/>创建菜单项

      • id 是这个菜单项的唯一指定标识符

      • 通过title给这个菜单起一个名称

    • 然后在Activity中重写 boolean OnCreateOptionsMenu(Menu menu)方法

      • 将上面创建的menu资源文件创建为菜单并添加到传入参数的menu对象上

        • getMenuInfalter().inflate(R.menu.main,menu);

        • 方法返回true,允许创建的菜单显示出来。

        • 如果返回false,菜单将无法显示

    • 重写Boolean OnOptionsItemSelected(MenuItem item)方法来对菜单的选择操作进行响应

      • 通过item.getItemId()可以知道点击的是哪个item

  • 通过代码的方式销毁一个Activity

    • finish()

  • 通过显式Intent启动一个活动

    • Intent有多个构造函数的重载,其中可以通过Intent(上下文,目标活动.class)来创建一个Intent对象,意思是在这个上下文中启动目标活动(Activity)

    • 然后将创建好的对象intent传入startActivity()中就可以启动目标活动了

  • 隐式Intent

    • 意图比较含蓄,不明确指明想要启动哪一个活动,而是指定一系列更为抽象的action和category等信息,然后交给系统分析这个Intent,帮我们找出合适的活动去启动

    • 通过在< activity > 标签下配置<intent-filter>的内容可以指定当前活动能够响应的action和category。

    • 只有Activity中配置的action和category完全匹配Intent中指定的action和category时才能够响应

    • 此时创建intent的方式是:Intent intent = new Intent("com.hrh.activitytest.ACTION_START");

    • 然后再startActivity(intent); 即可

    • 其中调用startActivity方法是会自动给Intent加上DEFAULT的category,所以上面并没有指定category

    • 每个intent只能指定一个action,但是能指定多个category

    • 发出去的intent没有活动来响应

      • No Activity found to handle Intent { act=com.hrh.activitytest.ACTION_START cat=[com.hrh.activitytest.MY_CATEGORY] }

      • 需要给目标活动添加缺少的category

      • 一个category都不能少

    • 隐式intent 还可以启动其他的应用程序的活动

  • Intent给下一个活动带数据

    • putExtra();有多个重载

  • intent给上一个活动返回数据

    • 启动活动使用startActivityForResult(请求码,intent);

    • 并且重写回调方法onActivityResult();在方法内判断数据来源以及是否请求成功

    • 被启动的活动准备好intent的数据后,调用setResult方法传入返回码以及返回的数据

    • 然后调用finish销毁活动,回到上一个活动并自动调用onActivityResult回调方法

    • 如果用户通过点击返回Back销毁活动,那么可以重写onBackPress方法,实现相同的逻辑即可。

  • Activity的生命周期

    • 任务(task):一组存放在栈里的活动的集合,这个栈叫做返回栈,安卓通过任务管理活动

    • 返回栈:后进先出

    • 活动的四个状态:

      • 运行状态:处于栈顶,回收优先级最低

      • 暂停状态:不处于栈顶,但是仍然可见,系统也不愿意回收

      • 停止状态:不处于栈顶并且完全不可见,系统会保存他相应的状态和成员变量,内存不足时会回收

      • 销毁状态:已经从栈中移除,系统会优先回收这种活动

    • 七个回调方法:

      • onCreate():活动被创建的时候调用,用于加载布局,绑定事件等初始化操作

      • onStart():活动由不可见 到 可见时调用

      • onResume():当活动准备好和用户进行交互时(获取了焦点)会被调用,此时活动处于运行状态,位于返回栈栈顶

      • onPause():当系统启动或者恢复另一个活动时调用,仍处于可见状态,我们会在这个方法中将一些消耗cpu的资源释放掉,以及保存一些关键数据,但是执行速度一定要快,不然会影响新的活动的使用

      • onStop():活动完全不可见,如果调用了onPause 而 没有调用onStop,则活动仍然可见

      • onDestory():活动被销毁之前调用,之后活动状态变为销毁状态

      • onRestart():活动从停止恢复为运行状态时调用

    • 给活动设置对话框主题使用theme = "@style\Theme.Appcomt.Dialog" 不然会报错(这里是因为使用这个主题的活动继承了AppCompatActivity,因此主题必须使用Appcomt或者他的子主题)

    • onSaveInstanceState(Bundle bundle) 用于在活动被回收之前保存一些重要的临时数据,并且保证一定会在回收之前执行。bundle以键值的方式存储数据

      • 保存的数据通过onCreate的参数获取

    • 启动模式LaunchMode

      • standard:默认模式,每次启动活动都会创建一个新的实例放在栈顶

      • singleTop:如果活动已经在栈顶了,再启动时会直接使用栈顶的实例不会再新建一个,然而当活动不在栈顶时,启动活动还是会再创建一个实例

      • singleTask:这个活动在整个应用的上下文只存在一个实例,当启动该活动时,系统会先检查整个返回栈是否存在活动的实例,如果存在,则将它上面的所有活动出栈,否则再创建一个新的实例.

      • singleInstance:单例。为该活动启用一个新的返回栈来管理这个活动,同时可以和其他程序共用这个返回栈,每次访问这个活动时不需要创建新的实例(除了第一次)

      • 当一个活动销毁时,下一个会显示同一个栈中的下一个活动,直到这个栈空了,才会显示另一个栈的栈顶活动

  • getClass().getSimpleName(); :可以打印当前的类名

  • 杀死当前进程:android.os.Process.killProcess(android.os.Process.myPid());,不能用于杀死其他进程

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值