Activity是Android组件中最基本也是最为常见用的四大组件(Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器)之一。
一个Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务,例如拨号、拍照、发送email、看地图。每一个activity被给予一个窗口,在上面可以绘制用户接口。窗口通常充满屏幕,但也可以小于屏幕而浮于其它窗口之上。
一个应用程序通常由多个activities组成,他们通常是松耦合关系。通常,一个应用程序中的activity被指定为“main”activity,当第一次启动应用程序的时候呈现给用户的那个activity。每一个activity然后可以启动另一个activity为了完成不同的动作。每一次一个activity启动,前一个activity就停止了,但是系统保留activity在一个栈上(“back stack”)。当一个新activity启动,它被推送到栈顶,取得用户焦点。Back Stack符合简单“后进先出”原则,所以,当用户完成当前activity然后点击back按钮,它被弹出栈(并且被摧毁),然后之前的activity恢复。
当一个activity因新的activity启动而停止,它被通知这种状态转变通过activity的生命周期回调函数。有许多回调函数一个activity可能会收到,源于它自己的状态变化-无论系统创建它、停止它、恢复它、摧毁它-并且每个回调提供你完成适合这个状态的指定工作的机会。例如,当停止的时候,你的activity应该释放任何大的对象,例如网络数据库连接。当activity恢复,你可以重新获得必要的资源和恢复被中断的动作。这些状态转换都是activity的生命周期的部分(下一节会详细论述)。
创建一个activity,你必须创建一个Activity的子类(或者一个Activity的子类的子类)。必须实现这个方法onCreate()。系统调用它当创建你的activity的时候。在我们的实现中,应该初始化activity的基本的组件。更重要的是,这里是我们必须调用setContentView()来定义activity用户接口的地方。
Android提供大量预定义的view,我们可以使用来设计和组件我们的布局。“Widgets”是一种给屏幕提供可视化(并且交互)元素的view,例如按钮、文件域、复选框或者仅仅是图像。“Layouts”是继承于ViewGroup的View,提供特殊的布局模型为它的子view,例如线程布局、格子布局或相关性布局。我们可以子类化View和ViewGroup类(或者存在的子类)来创建自己的widget和而已并且应用它们到你的activity布局中。
最普通的方法是定义一个布局使用view加上XML布局文件保存在你的程序资源里。这样,我们可以单独维护我们的用户接口设计,而与定义activity行为的代码无关。可以设置布局作为UI使用setContentView(),传递资源布局的资源ID。
同时,必须把activity在manifest文件中声明,不然它不能被系统访问。声明格式如例:
<application
    android:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/AppTheme"><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity>
</application>
一个<activity>元素也能指定多种intent filters--使用<inetent-filter>元素--为了声明其它应用程序可以激活它。当创建一个新应用程序使用Android SDK工具,存根activity自动创建,包含一个intent filter,声明了activity响应"main"动作,并且应该被 放置 在"launcher"分类。Intent filter看起来像这个样子。
<action>元素指定这是一个"main"入口点对这个应用程序。<category>元素指定,这个activity应该被列入系统应用程序列表中(为了允许用户启动这个activity)。
如果希望应用程序自包含,并且不希望别的应用程序激活它的activities,那么不需要任何其它intent filters。只有一个activity应该有“main"动作和”launcher“分类,就像前面这个例子。不希望被其它应用程序访问原Activities应该没有intent filters。
如果我们希望activity响应隐含的intents,从其它应用程序,那么你必须为这个activity定义额外的intent filters。每一种你希望响应的类型的intent,你必须包含<intent-filter>,包含<action>元素,可选的,一个<category>元素并且/或一个<data>元素。这些元素指定你的activity能响应的intent的类型。
除了上面简述的Activity的生命周期,以及如何创建一个Activity、如何声明这个Activity之外。Activity的一些常用的基本方法也比较重要,如下所示:
方法名 方法描述
public final View findlliewById(int id) 根据组件id获取组件对象
public void setEnabled(boolean enabled) 设置是否可编辑
public Window getWindow() 获取一个window对象
public void setContentView(int layoutResID) 设置显示组件
public void setContentView(View view) 设置显示组件
public void addContentView(View view) 动态添加组件

表中列出来Activity的基本的方法,除此之外,Activity类还提供了与intent、service等等相关的方法,等讲解相关知识点时在做阐述。
上面就是Activity的简单介绍,下一篇文章我将讲述Activity的生命周期的内容。这里我会开一个系列文章讲述android开发的内容,欢迎大家阅读。同时也欢迎大家购买我的书《Android开发实战:从入门到产品》,京东与天猫均有销售:
京东销售地址
天猫销售地址

Activity是什么相关推荐

  1. 点击事件如何传递到Activity中

    1.首先,当我们触摸屏幕时,通过Android消息机制,从Looper从MessageQueue中取出该事件,发送给WindowInputEventReceiver. 2.WindowInputEve ...

  2. Activity在有Dialog时按Home键的生命周期

    当一个Activity弹出Dialog对话框时,程序的生命周期依然是onCreate() - onStart() - onResume(),在弹出Dialog的时候并没有onPause()和onSto ...

  3. Activity的四种启动模式

    standard:标准的启动模式,默认启动模式.启动一个activity就会创建该activity的实例. singleTop:如果启动的activity已经位于栈顶,那么就不会重新创建一个新的act ...

  4. 横竖屏切换时Activity的生命周期

    1.不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏执行一次,切竖屏执行两次. 2.设置Activity的android:configChang ...

  5. 源码分析-Activity的启动流程

    以android 6.0源码为参考,其他版本api会稍有不同 在Activity中,启动一个Activity的方法 @Override public void startActivity(Intent ...

  6. 总结笔记-Activity的启动流程

    Activity.startActivity Activity.startActivityForResult Instrumentation.execStartActivity ActivityMan ...

  7. java类安卓app 简介_android.app.Activity 的介绍

    文章可随意转载,但务必注明源地址 发现当前Android的资料不是很多,而且对于Activity的介绍也很少,所以把官方文档的android.app.Activity的介绍翻译了一下,加入了一些自己的 ...

  8. Android 隐式跳转(Activity的隐式跳转)

    学而时习之,温故而知新,放假前回顾下android 的 隐式跳转 Activity的显式跳转: 是直接指定需要调用的Activity Activity的隐式跳转: 不明确指定启动哪个Activity, ...

  9. Android Fragment 调用宿主Activity 里面的方法

    方法 1 : 直接在Fragment 写 MainActivity main = (MainActivity) getActivity();main.xx; // xx 是 MainActivity ...

  10. Android 跳转Activity 的时候出现闪屏问题处理

    一般这种问题出现的原因就是某些activity的主题的设置了透明引起的 处理方法就是在界面跳转的时候时候添加 overridePendingTransition(0, 0); 例如 Intent in ...

最新文章

  1. java foreach 循环原理
  2. 再理下系统分层架构模式
  3. 下方点击出项上方对应的插件_你的PPT里装了几个插件?我赌你不知道TA!
  4. ssl提高组周三备考赛【2018.10.31】
  5. Sparse Modeling of Intrinsic Correspondences
  6. 全网首发:FreeSwitch服务器转发引起的硬解失败原因分析
  7. Raki的读paper小记:Dark Experience for General Continual Learning: a Strong, Simple Baseline
  8. 慕课马尔萨斯人口模型
  9. 花了一年时间开发的铣床数控系统NCStudioPro(支持钻孔,铣削,切割等铣床加工工艺)...
  10. kpi绩效考核流程图_某集团公司完整KPI绩效考核方案(PPT)
  11. java jsessionid 会话_jsessionid 对JAVA WEB jsessionid的剖析
  12. 怎样用计算机二元一次方程,键入公式在计算机如何键入二元一次方程式公式 – 手机爱问...
  13. 【无标题】学生成绩管理系统
  14. 级联选择器实现省市区三级联动
  15. Problem D: 字符构成的图形
  16. android4.4广播,Android4.4 framework分析——广播的注册(BroadcastReceiver)和发送(sendbroadcast)过程分析...
  17. C语言十大操作符超全详解【建议收藏】
  18. Oulipo-欧力波(KMP字符串匹配问题)
  19. VTK笔记——插值样条曲线采样
  20. java实现斗地主(一)

热门文章

  1. 2020低压电工模拟考试题及低压电工复审模拟考试
  2. Linux系统查看物理CPU个数、CPU核数及逻辑CPU个数
  3. 指南:内网穿透与DDNS动态域名解析区别,一篇看懂
  4. python 中文分词_python中文分词,使用结巴分词对python进行分词(实例讲解)
  5. 解决springmvc返回json数据IE出现文件下载和json数据中文乱码问题
  6. 011.淘宝登录页面
  7. Unity动画DG.Tween插件
  8. 华为mate30epro不支持鸿蒙,华为Mate30E Pro的“失败”或早已注定!
  9. 如何半个小时做出一个《新型冠状病毒同程查询》
  10. matlab混淆矩阵图