android Activity的杂乱总结

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是 相同的)

时间: 2024-11-04 08:08:22

android Activity的杂乱总结的相关文章

android——activity与view

1.       activity, view概述 进行android开发,只需具有java语言基础即可.入门的开发并不需要一些高深的java知识,如Swing,网络,线程,数据库等. 刚开始进行android开发,会觉得android的架构设计得很好,接口简单,模块独立.特别是像我这种C++程序员来说,没有了框架自动添加的很多消息映射宏,窗口的启动,过多复杂的类等.如android应用程序的基本构成就采用MVC模式,界面与逻辑开发独立,程序员可以只专注于程序逻辑开发,美工可以专注于界面设计.

Android——Activity中的六个主要函数

Android Activity中的六个主要函数 Android中一个Activity一般都需要实现六个函数: onCreate(), onStart(), onResume(),onPause(),onStop(),onDestroy(). onCreate函数:注册你要用到的变量,比如说service,receiver,这些变量是无论你的Activity是在前台还是在后台都能够被响应到的,然后调用上面那个用来初始化的函数初始化布局信息. onStart函数:注册一些变量.这些变量必须在And

[转]Android Activity和Fragment的转场动画

Android Activity和Fragment的转场动画 Activity转场动画 Activity的转场动画是通过overridePendingTransition(int enterAnim, int exitAnim)实现的. 这个方法是API Level 5 加入的. 这个方法在startActivity(Intent) or finish()之后被调用,指定接下来的这个转场动画. 方法的第一个参数:enterAnim,是新的Activity的进入动画的resource ID: 第二

Android Activity类讲解(一)

--by CY[[email protected]] 1.protected void onCreate(Bundle savedInstanceState) { throw new RuntimeException("Stub!"); } 当创建一个Activity时,系统会自动调用onCreate方法来完成创建工作.该创建工作包括布局,监听器的绑定等. 首先说一下Bundle 这个类,Bundle是一个键值对,跟Map类似,两个Activity之间的通信可以用Bundle类来实现.

Android Activity和Fragment的生命周期图

Android Activity和Fragment的生命周期图,布布扣,bubuko.com

Android Activity启动模式

在Android的联机文档中,有对Activity的简单介绍,现在通过编写代码对Activity的启动模式做一个深入的理解.在配置文件AndroidManifest.xml中,activity元素的android:launchMode属性用来配置对应Activity的启动模式,目前有以下四种启动模式:1.standard2.singleTop3.singleTask4.singleInstance如果不对Activity设置启动模式,默认就是standard模式 一.standard 请看以下代

我的Android进阶之旅------>Android Activity的singleTask加载模式和onActivityResult方法之间的冲突

今天调试一个bug的时候,情景如下: 一个Activity A,需要用startActivityForResult方法开启Activity B.Activity B的launch mode被设置为singleTask,那么在Activity B开启之后的瞬间(未等B返回任何result),Activity A中的onActivityResult方法就会被调用,并且收到一个RESULT_CANCEL的request code. 然后在ActivityB中做了一些逻辑之后,在Activity B通过

[转]Android:Activity+Fragment及它们之间的数据交换(一)

2014-05-18         来源:Android:Activity+Fragment及它们之间的数据交换(一)   简介: 为什么要用Fragment?使用Fragment可以在一个Activity中实现不同的界面.Fragment与 Fragment之间的动画切换,远比Activity与Activity之间的动画切换变化方式多.很多时候,我们通过使用一个Activity,切换 多个Fragment.本次博客,主要列举一下Fragment与它的Activity之间进行数据交换的方式.

【Android4高级编程笔记】深入探讨Android Activity

创建Activity 要创建一个新的Activity,需要对Activity类进行扩展,在新类定义用户界面并实现新的功能. 视图是用来显示数据和提高用户交互的Ui控件.Android提供了多个布局类,称为ViewGroup,它可以包含多个视图来帮助布局UI.Fragment用来封装UI的各个部分,从而能够方便地创建动态界面. Activity需要在Manifest中对其进行注册.在Manifest的application节点内添加新的activity标签:activity标签包含像标签.图标.必