码迷,mamicode.com
首页 > 移动开发 > 详细

android Activity的杂乱总结

时间:2014-12-25 21:48:36      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:

android中Activity可以说是四大组件中用的最为广泛,也是最为基本的一个组件。几乎和用户的所有交互都需要通过Activity来实现。

最近在学习过程中,有一些关于Activity的内容,让我迷惑。所以在此总结一番,以使我的知识更加牢固。

 

1.Activity的生命周期:

通常的生命周期一看图,都明白,但是今天遇到一个问题,让我很是无解,查了好半天,才查到原因。

刚开始我理解的是,当一个Acitivity强制设置为横屏后,再按电源按键进行锁屏,是不会重新走oncreate的,后来发现不对,因为手机本来是竖屏的,当你锁屏之后,其实又相当于切换到竖屏了,所以还是会调用oncreate的。接下来还有一个问题,那怎么才能屏蔽这个问题呢。在mainfest文件中,给activity配置android:configChanges="orientation|keyboardHidden"。本来应该说就可以了,但是尝试了半天还是不行。于是又搜索了很多,才发现在api 13之后,需要添加screenSize,所以正确的应该是android:configChanges="orientation|keyboardHidden|screenSize"

 

2.Activity最佳实践

最近买了本郭霖的《第一行代码》虽然内容比较基础,但是还是有很多东西可以学到。比如说,他提到的Activity的启动的最佳实践。

 

问题描述:

当两个人或者一个团队去完成一个项目的时候,往往每个人负责一个板块,或者功能模块,如果想调用别人写的activity,而我又不知道应该给它传递什么参数,这样就得每次去询问负责这块代码的人,或者直接看他里面是怎么写的。这样的协作效率就有点低。所以,这本书的作者提供了一种方式。如下面,一看就能懂

 

public class example extends Activity
{
   public staitc void actionStart(Context context ,String p1,String p2)
   {
         Intent intent = new Intent(content,this.class);
          intent.putString("parm1",p1);
          intent.putString("parm2",p2);
          context.startActivity(intent);

    } 
    
 }

  

 3.在broadcastreciever中启动activity

当我们在广播接收器中接收消息时,可能需要根据情况,去启动App的Activity,但是当我想当然的用普通的方式启动时,会报运行时错误,大概意思就是说,如果在广播中启动Activity时,必须将Intent的flag指定为FLAG_ACTIVITY_NEW_TASK

在flag中必须指定为newTask。

 

4.Activity中的launchMode与Intent中的flag的关系

 

经过我查资料与看网友的一些东西,初步得出这样的结论。

launchMode主要针对的是在同一个task中的行为。

而flag是指明,Activiy是否需要创建新的task。

而是否创建新的取决于,acitivy的taskAffinity是否与已有的相同。(默认情况下,一个程序中,所有的activiy的taskAffinity是 相同的)

 

android Activity的杂乱总结

标签:

原文地址:http://www.cnblogs.com/gaoteng/p/4179086.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!