基础回顾--四大组件之一--Activity

大家好,因为这几天打算去找实习,所以需要回顾一下旧的知识,其实说是回顾,我个人觉得用把开发中的经验融合到Activity更加深一步认识,比较贴切.在这里,我技术话语可能说得比较没有那么标准,但是我是通过自己的见解来描述的.

Activity的理解

对于Activity,就是活动的意思.可是,我不建议我们把它叫活动,就直接是叫英文吧.而对于它的作用,我认为描述成容器比较合适,因为它是包含用户界面的组件,与用户进行交互的一个组件.当然,页面组件我们是通过XML文件来进行布局的,而我们一般都形容这个XML文件为布局文件.
Activity怎么使用XML布局文件呢?

 setContentView(); 

当然,在这里我觉得大家需要区分一下,一般我们的Fragment使用的是

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        View view = View.inflate(mActivity, R.layout.a, null);
        return view;
    }

Activity是一个能和用户进行交互的原因是以为他是Context的子类并且实现了window.callback和keyevent.callback两个接口..

Activity生命周期

对于Activity的生命周期,我相信每一个人在开始学习的时候就能结合到我们生活使用理解到Activity的生命周期作用.作为一个老生长谈的话题,我们今天也来说一说.

Activty生命周期

OnCreate():Activity初始化,我们一般的监听初始化,布局初始化,数据初始化都会在这个方法内进行.

onStart():由不可见到可见

onResume():准备好交互,就是再次获得焦点

onPause():失去焦点

onStop():不可见

onDestory():销毁活动,这个状态十分重要,为了保证不会发生内存溢出等问题,我们一般类似于数据库的连接以及很多的对象的摧毁,或者说反注册取消监听就会在这个方法内取消.

onRestart():停止变为调用,这个状态一般我们都是用于刷新数据,保证我们得到的数据及时更新.
当然,我们理所当然还存在着类似于onPostResume()和onPostCreate()的方法,但是这两个方法,我们基本开发很少用到.

生命周期特例:

大家有没有想过,我们屏幕横竖屏切换其实是一个对生命周期认识最好的体现.
我们一旦切换屏幕,我们就会经历了一个Activity的整个创建销毁再创建销毁的过程其中会利用Bundle存储参数,新建的时候会提交数据,这是一个十分浪费资源,并且大大降低用户体验的方式.所以我们有一个方法,
我们需要在AndroidMainfest.xml中对OrientationActivity对应的配置android:configChanges=”orientation”. 这样我们就每次只会调用onConfigurationChanged()这么一个方法.
当然,对于类似于视频播放,游戏开发,我们一般都是直接锁定的.

1.指定为竖屏:在AndroidManifest.xml中对指定的Activity设置android:screenOrientation=”portrait”,或者在onCreate方法中指定:

 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);  //竖屏  

2.指定为横屏:在AndroidManifest.xml中对指定的Activity设置,android:screenOrientation=”landscape”,或者在onCreate方法中指定:

  `setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); //横屏  

安全退出Activity

在一个全局的环境Application中实现:通过一个List<>对Activity进行管理,在利用增强循环销毁.

    List<Acitivity> lists;
    lists=new ArrayList<Activity>();
    lists.add(this);
    for<Activity  activity:lists){
     activity.finish(;)
  }
      @Override
        protected void onDestroy() {
            // TODO Auto-generated method stub
            super.onDestroy();
            lists.remove(this);
        }

Activity状态保存

大家还记得我们刚刚上面说到的一个Bundle,其实这个Bundle是我们从来保存数据的,相对于全局的内存.

 protected void onSaveInstanceState(Bundle outState) {
    // TODO Auto-generated method stub
  outState.putLong("id",12346);
}

一般在Activity的Oncreate()的方法就能获取到这个对象,以为我们上面的方法会利用Bundler对这个进行自己的内存保存,

既然说到数据传递,我这里说一下吧,我们Activity之间的数据传递,是可以通过Intent的.
一般我们对于基本类型的数据是可以这届利用

 putStringExtra(key,value);//设定的方法
 getStringExtra(key,value);//获取的方法

 //也可已通过Bundle作为媒介;

 Bundle bundle=new Bundle();
 bundle.putStringExtra(key,value);
 intent.putExtras(bundle);

传递对象是使用,Serializable,大概思路是将对象实现Serilizable,然后可以通过

putSerializableExtra(key,value);//设定的方法
getSerializableExtra(key,value);//获取的方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值