Activity相关

来源:互联网 发布:高中化学大全软件下载 编辑:程序博客网 时间:2024/06/08 00:35

开启activity获取返回值的步骤

 步骤:

  1、在开启activity时调用
     //开启一个activity并等待返回结果
 startActivityForResult(intent, 200);
  2、在目标activity中设置返回的数据
 Intent intent = new Intent();
intent.putExtra("username", username);
//设置界面关闭时返回数据
setResult(0, intent);
  3、关闭目标activity
//自动关闭界面
finish();
  4、重写onActivityResult方法接收返回的数据:

代码:

/**     * requestCode 开启activity时设置的请求吗     * resultCode 在目标activity中设置的结果码     * data 第二个界面返回的数据     */    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {    super.onActivityResult(requestCode, resultCode, data);//    //    if(resultCode==0){//    String username = data.getStringExtra("username");//        //        Toast.makeText(this, username, 0).show();//    }//    //    if(resultCode==1){//    String thirdInfo = data.getStringExtra("thirdInfo");//        //        Toast.makeText(this, thirdInfo, 0).show();//    }//        //使用requestCode,resultCode来判断是哪个业务逻辑界面返回的数据    if(requestCode==200){    String username = data.getStringExtra("username");                Toast.makeText(this, username, 0).show();    }        if(requestCode==300){    String thirdInfo = data.getStringExtra("thirdInfo");                Toast.makeText(this, thirdInfo, 0).show();    }                }

请求码和结果码的作用

请求码和结果码 就是一个标记 ,使用requestCode,resultCode来判断是哪个业务逻辑界面返回的数据.


activity的生命周期


    从被创建到销毁经历几个阶段,每个阶段就表示一个方法,这些方法就是生命周期的回调。

安卓官方文档可查看详细信息


   生命周期:
1. activity和人一样 都有生命周期  
2. onCreate()  当activity第一次创建的时候调用 
3. onDestroy() 当activity销毁的时候调用 
4. onStart() 当activity可见的时候调用的方法 
5. onStop() 当activity不可见的时候调用的方法 
6. onResume() 当界面的按钮可以被点击了  
7. onPause() 当界面的按钮不可以被点击的时候调用   失去焦点
8. onRestart() 当我按小房子的时候 再次启动的时候就会调用 

    1、activity创建时调用onCreate、onStart、onResume;
    2、关闭activity时调用:onPause、onStop、onDestroy;
    3、最小化activity时调用:onPause、onStop;
    4、最小后重新打时调用:onRestart、onStart、onResume;

横竖屏切换的生命周期

横竖屏切换的实质是销毁原来的activity实例,重新创建一个activity实例

禁用横竖自适应的方式:   
    1、screenOrientation:landspace横屏、 portrait竖屏(固定屏幕的显示方式)
    2、 android:configChanges="orientation|keyboardHidden|screenSize"让Android系统不在敏感横竖屏切换 
    

任务栈的概念

   任务:打开一个activity界面;

    任务栈:

将activity压入栈中,用来记录维护我们打开和关闭的activity   作用 就是用来维护用户界面操作体验的

   设计任务栈的目的:用来维护用户的体验,记录打开界面和关闭界面的信息。
    1、打开一个activity界面表示在栈中存放了一个任务,关闭一个界面表示清除了一个任务;

    2、栈里面的任务清除完毕后,应用程序退出;

    3、当任务栈完全情况的时候 说明activity清空了
    4、手机操作系统可以有多个任务栈 
    5、任务栈id 是一个自增长的    

Activity4种启动模式

standard启动模式(默认的)

单纯的activity启动就压入栈中,activity销毁就从栈中抛出

singletop启动模式

singletop 单一顶部模式 在activity的配置文件中设置android:launchMode="singleTop"
如果任务栈的栈顶存在这个要开启的activity,不会重新的创建activity,而是复用已经存在的activity。保证栈顶如果存在,不会重复创建。
应用场景:浏览器的书签

singletask启动模式
singetask 单一任务栈,在当前任务栈里面只能有一个实例存在
当开启activity的时候,就去检查在任务栈里面是否有实例已经存在,如果有实例存在就复用这个已经存在的activity,并且把这个activity上面的所有的别的activity都清空,复用这个已经存在的activity。保证整个任务栈里面只有一个实例存在
应用场景:浏览器的activity
如果一个activity的创建需要占用大量的系统资源(cpu,内存)一般配置这个activity为singletask的启动模式。webkit内核 c代码

singleinstance启动模式
singleInstance启动模式非常特殊, activity会运行在自己的任务栈里面,并且这个任务栈里面只有一个实例存在
如果你要保证一个activity在整个手机操作系统里面只有一个实例存在,使用singleInstance

应用场景: 电话拨打界面

补充

如何激活(跳转到)短信发送界面

查看系统上层应用源码,查找短信发送页面在清单文件中的activity配置,从而知道它配置了什么样的意图过滤器,
就知道了如何发送意图(以什么格式传递数据)启动短信发送页面
 Intent intent = new Intent(); //创建一个意图对象 intent.setAction("android.intent.action.SEND");  //设置开启意图的动作intent.setType("text/plain");  //设置数据类型 intent.addCategory("android.intent.category.DEFAULT");String data = objects[position]; //就是我点击item获取到的 数据 //我要把我点击的item的内容  传递到 短信发送界面 intent.putExtra("sms_body", data);//开启意图 startActivity(intent);

销毁一个activity

调用activity的finish()函数

activity的启动

每个activity都是由意图启动的,隐式意图通过清单文件中配置的意图过滤器的各个属性来
匹配activity(例如配置了LANCH意图过滤器的activity会作为启动activity在桌面有一个图标),
显示意图直接通过类名启动意图。

0 0
原创粉丝点击