activity各方面详解

1.activity是什么?

Activity是Android提供的四大组件之一,是进行Android开发必不可少的组件.Activity是一个界面的载体,可以把它与html页面进行类比,html页面由各种各样的标签组成,而Activity则可以由各种控件组成

 

2.activity的生命周期

 

 

2.1生命周期的最初理解

onCreate() : 

当Activity第一次被创建的时候调用此方法.一般在此方法中进行控件的声明,添加事件等初始化工作.

onStart():

当Activity被显示到屏幕上的时候调用此方法.

onResume():

当此Activity能够被操作之前,也就是能够获得用户的焦点之前调用此方法.

onRestart():

当Activity被停止后又被再次启动之前调用此方法.接着将调用onStart()方法.

onPause():

当第一个Activity通过Intent启动第二个Activity的时候,将调用第一个Activity的onPause()方法.然后调用第二个Activity的onCreate(),onStart(),onResume()方法,接着调用第一个Activity的onStop()方法.如果Activity重新获得焦点,则将调用onResume()方法;如果此Activity进入用户不可见状态,那么将调用onStop()方法.

onStop():

当第一个Activity被第二个Activity完全覆盖,或者被销毁的时候回调用此方法.如果此Activity还会与用户进行交互,将调用onRestart方法();如果此Activity将被销毁,那么将调用onDestroy()方法.

onDestroy():

Activity被销毁之前调用此方法.或者是调用finish()方法结束Activity的时候调用此方法.可以在此方法中进行收尾工作,比如释放资源等.

(注意:重写某个Activity的这些回调方法的时候需要首先在第一行调用基类Activity的相应的回调方法.比如super.onCreate(),super.onStart()等等.)

 

2.2生命周期的简单应用场景

打开一个activity

onCreate —— onStart —— onResume

点击返回键(此时activity销毁)

onStop —— onDestroy

 

a页面跳b页面

a:onPause、b:onCreate、onStart、onResume、a:onStop

b页面返回a

b:onPause、a:onRestart、onStart、b:onStop、onDestroy

 

横屏到竖屏

07-10 18:57:34.481 16266-16266/com.example.day_09zhou_2 E/TAG: onPause:

07-10 18:57:34.485 16266-16266/com.example.day_09zhou_2 E/TAG: onStop:

07-10 18:57:34.485 16266-16266/com.example.day_09zhou_2 E/TAG: onDestroy:

07-10 18:57:34.530 16266-16266/com.example.day_09zhou_2 E/TAG: onCreate:

07-10 18:57:34.532 16266-16266/com.example.day_09zhou_2 E/TAG: onStart:

07-10 18:57:34.538 16266-16266/com.example.day_09zhou_2 E/TAG: onResume:

 

竖屏到横屏

07-10 18:58:09.266 16266-16266/com.example.day_09zhou_2 E/TAG: onPause:

07-10 18:58:09.267 16266-16266/com.example.day_09zhou_2 E/TAG: onStop:

07-10 18:58:09.267 16266-16266/com.example.day_09zhou_2 E/TAG: onDestroy:

07-10 18:58:09.328 16266-16266/com.example.day_09zhou_2 E/TAG: onCreate:

07-10 18:58:09.331 16266-16266/com.example.day_09zhou_2 E/TAG: onStart:

07-10 18:58:09.336 16266-16266/com.example.day_09zhou_2 E/TAG: onResume:

 

锁屏

07-10 18:59:20.652 16266-16266/com.example.day_09zhou_2 E/TAG: onPause:

07-10 18:59:20.685 16266-16266/com.example.day_09zhou_2 E/TAG: onStop:

 

开屏

07-10 18:59:46.299 16266-16266/com.example.day_09zhou_2 E/TAG: onRestart:

07-10 18:59:46.333 16266-16266/com.example.day_09zhou_2 E/TAG: onStart:

07-10 18:59:46.515 16266-16266/com.example.day_09zhou_2 E/TAG: onResume:

 

2.3解决切换横竖屏的时候会重走生命周期

 

1.activity标签设置 android:configChanges="orientation|keyboardHidden|screenSize"

这样切换横竖屏就不会重新执行生命周期,可以重写方法,在里面执行切换横竖屏时要做的操作

@Override

public void onConfigurationChanged(Configuration newConfig) {

if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {

Log.d("===","\n 当前屏幕为横屏");

} else {

Log.d("===","\n 当前屏幕为竖屏");

}

super.onConfigurationChanged(newConfig);

Log.e("===", "onConfigurationChanged");

// setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); //设置横屏

}

2.固定屏幕,强制不让他旋转

只竖屏显示(android:screenOrientation="portrait")

只横屏显示(android:screenOrientation="landscape")

 

3.四种启动模式

在 manifest 文件中声明 activity 时,你可以利用activity元素的launchMode属性来设定 activity 与 task 的关系。launchMode 属性指明了 activity 启动 task 的方式。 launchMode 属性可设为四种启动模式:

 

standard:默认模式

是最常见的activity启动方式,也是默认的启动的方式。当启动一个activity的时候他将进入返回栈的栈顶。系统不会管栈内是否有相同的activity,方式像后入先出。

 

singleTop:栈顶模式

方式是在活动启动的时候,系统先判定栈顶是否有相同的活动,如果没有则新建活动,否则将不新建活动。而是直接使用他。

 

singleTask:栈内复用

方式在活动启动的时候,系统先判定栈中是否有该活动的实例,如果没有这新建实例,如果有则将已有活动上面的栈都出栈。

 

singleInstance:单栈模式

方式在启动的时候会新建一个栈,当别的程序访问这个活动启动这个活动的时候得到的也是这个实例,所有应用访问的都是同一个实例。

4.跳转页面和传值

跳转页面使用intent

 

4.1跳转页面

4.1.1.跳转至当前进程其他activity页面

Intent intent = new Intent(this, Main2Activity.class);

startActivity(intent);

 

4.1.2.跳转至其他app的activity

Intent intent=new Intent(); intent.setComponent(new ComponentName(String packageName,String activityName )); startActivity(intent);

注:这样是跳到主activity,如果要跳到其他activity需要在对方activity标签下android:exported="true"

 

4.1.3.打开常见的系统的activity

打开浏览器网页:

Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.setData(Uri.parse("http://www.baidu.com"));

startActivity(intent);

打开相册:

Intent intent = new Intent(); intent.setAction(Intent.ACTION_GET_CONTENT); intent.setType("image/*"); startActivity(intent);

打开发送短信界面:

Intent intent = new Intent(); intent.setAction(Intent.ACTION_SEND); intent.setType("text/plain"); intent.putExtra(Intent.EXTRA_TEXT,"Hello World !"); startActivity(intent);

打开拨号界面:

Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.setData(Uri.parse("tel:110")); startActivity(intent);

 

4.2传值

4.2.1 传递基本数据,以键值对的形式,接收的时候也是通过键值对

发送:

Intent intent = new Intent(this, Main2Activity.class);

intent.putExtra("key","value");

startActivity(intent);

接收:

Intent intent = getIntent();

String key = intent.getStringExtra("key");

 

4.2.2 传递对象

实体类实现Serializable接口

发送和发送基本数据一致

接收:强转成实体类类型

Bean key = (Bean)intent.getSerializableExtra("key");

 

还可以通过bundle来传递

发送:

Intent intent = new Intent(Activity1.this,Activity2.class); Person person = new Person("zhangsan",23,"USST","ShangHai"); Bundle bundle = new Bundle(); bundle.putSerializable("person",person); intent.putExtras(bundle); startActivity(intent);

接收和上面的接收方式一致

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 活动(activity)是工作流(workflow)的基本组成部分,用来表示一个特定的任务或操作。在CSND,我们详细讨论了工作流以及与之相关的活动的概念和用法。 工作流是指一系列有序的活动,这些活动按照一定的流程和规则组织在一起,以实现特定的目标或完成一项任务。通过工作流,可以将复杂的业务流程分解为一系列简单的活动,使得整个过程更加可控和可管理。 在CSND上,我们对活动进行了详细的阐述。活动可以定义为流程一个步骤或一个任务,它可以是人工(即由人手动完成)、自动(即由系统自动执行)或者是一个子流程(即将一个大的流程拆分为若干小的活动序列)。活动可以具有特定的输入和输出,并且可以与其他活动之间存在依赖关系和条件约束。 在CSND,我们介绍了如何设计和构建一个有效的工作流,包括定义活动的输入和输出、规划活动的执行顺序和条件、以及监控和管理工作流的执行过程。我们还介绍了如何使用工作流引擎来自动化工作流的执行,并且讨论了一些常见的工作流模式和最佳实践。 总结来说,在CSND上我们详解了活动和工作流的概念、用法和最佳实践。了解这些概念和技术可以帮助开发人员和系统设计师更好地理解和设计复杂的业务流程,提高工作效率和质量。 ### 回答2: 工作流是一种将工作任务自动化、组织和跟踪的方法。在计算机科学领域,工作流主要用于描述和管理一组相关联的任务,以及控制这些任务之间的流程和依赖关系。 CSDN(国软件开发网)是一个面向开发者和技术爱好者的社区。在CSDN上,人们可以分享编程经验、交流解决方案,以及获取各种技术资源。 在CSDN上,关于工作流的讨论和文章非常丰富。人们可以找到关于工作流概念、原理、实现方法以及在不同领域的应用等方面的详细说明。CSDN的工作流话题讨论区是一个热门的社区板块,许多开发者在这里分享自己的经验和见解。 在CSDN上,人们可以学习到各种工作流技术的实际应用。例如,人们可以了解到如何使用流程引擎来设计和管理复杂的业务流程,以及如何使用工作队列来实现任务调度和分配。此外,CSDN还提供了许多工作流软件和工具的评价和比较,帮助人们选择适合自己需求的工作流解决方案。 总的来说,CSDN是一个为开发者和技术爱好者提供丰富工作流信息和资源的平台。无论是初学者还是熟练的开发者,都可以在CSDN上找到对工作流感兴趣的内容,并从提高自己的技能和知识水平。 ### 回答3: csdn(CSDN)是一个面向IT技术开发者的社区平台,提供各种技术文档、博客、问答、资讯等服务。其activity和工作流是csdn上的两个重要话题。 ActivityActivity)是Android开发一个核心组件,用于构建用户界面和处理用户交互。它代表一个具有用户界面的单个屏幕,能够接收用户的输入并展示相关信息。在Android应用程序,每个Activity都是由一个独立的界面组成,可以通过调用其他Activity来实现界面间的跳转和切换。Activity还可以处理生命周期事件,如创建、启动、暂停、恢复、停止和销毁等,确保应用程序在用户操作或系统资源限制时的正确响应。 工作流(Workflow)是一种逻辑上相关的活动或任务的有序排列,以完成特定的目标。它可以由一系列的操作、决策和条件构成,以及可以并行或串行执行的操作步骤。工作流通常用于解决复杂的业务流程,通过将任务分解成一系列的步骤,每个步骤都有其特定的责任和要求。在软件开发,工作流可以用于优化业务流程、提高工作效率,并提供实时的监控和控制。工作流技术还支持自动化和智能化的流程执行,可减少人工干预,提高工作质量和准确性。 在csdn上,关于activity和工作流的文章和教程非常丰富。开发者可以在平台上学习如何创建和管理Android应用程序Activity,并了解常见的生命周期事件和处理方式。此外,还可以找到关于工作流的相关文章,了解如何利用工作流技术来设计和优化复杂的业务流程,提高工作效率和质量。 总体而言,csdn是一个向开发者提供技术资源和交流平台的社区,涵盖了包括activity和工作流在内的各种技术话题。在这里,开发者可以获取到相关的学习材料和资源,以提升自己的技术水平并解决实际问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值