Android学习笔记--从活动activity开始

本文详细介绍了Android中的Activity概念、生命周期及其状态转换。同时提供了创建Activity的示例代码,并解释了各个生命周期方法的作用。

前言

最近一段时间一直在看博客,觉得大家能分享自己的学习经验是一种奉献精神,是一种不断坚持提升自我的途径。回想自己在偶然的机会下,开始从.NET开发走上android开发的道路,之前一直为了完成任务填鸭式去学习、去寻找捷径想快速的提升。这种急切的心理导致学习的过程中基础不牢,慢慢的陷入了苦恼中,严重的影响了工作的效率和工作的心情,那么现在我想开始从基础学习,打好根基;养成好的习惯,从博客开始,开始魔鬼般的训练,当然这里有点夸张,时间就像x沟一样挤一挤还是有的,难度就是要在不断学习的同时挤出时间坚持写博客.

接下来进入正题,我们从Activity开始....

1.什么是activity?

Activity 是用户接口程序,原则上它会提供给用户一个交互式的接口功能。它是 android 应用程序的基本功能单元。Activity 本身是没有界面的。所以activity类创建了一个窗口,开发人员可以通过setContentView(View)接口把UI放到activity创建的窗口上,当activity指向全屏窗口时,也可以用其他方式实现:作为漂浮窗口(通过windowIsFloating的主题集合),或者嵌入到其他的activity(使用ActivityGroup)。activity是单独的,用于处理用户操作。几乎所有的activity都要和用户打交道,当然用使用activity是必须要在AndroidManifest.xml中注册的。

2.activity生命周期

提到activity,不得不说的秘密就是activity的生命周期,我们通过一张图片可以清晰的看出来,如图2-1所示:
图片activity
图2-1

3.Activity 的状态及状态间的转换


在 android中,Activity 拥有四种基本状态:

1. Active/Runing一个新 Activity启动入栈后,它在屏幕最前端,处于栈的最顶端,此时它处于可见并可和用户交互的激活状态。

2. Paused 当 Activity被另一个透明或者 Dialog 样式的 Activity 覆盖时的状态。此时它依然与窗口管理器保持连接,系统继续维护其内部状态,所以它仍然可见,但它已经失去了焦点故不可与用户交互。

3. Stoped 当 Activity被另外一个 Activity 覆盖、失去焦点并不可见时处于 Stoped状态。

4. Killed Activity被系统杀死回收或者没有被启动时处于 Killed状态。

通俗的说在一个Activity正常启动过程中,这些方法调用的顺序是onCreate -> onStart -> onResume;在Activity被kill掉的时候方法顺序是onPause -> onStop ->onDestroy这样完成了整个的生命周期;在这个生命周期中还有中断处理状态,例如电话来了,则是onPause-> onStop,恢复时onStart -> onResume。

当然有时候我们手机在运行一个应用程序的时候,有可能打进来电话发进来短信,或者没有电了,这时候程序都会被中断,优先去服务电话的基本功能,另外系统也不允许你占用太多资源,至少要保证一些功能(比如电话),所以资源不足的时候也就有可能被kill掉。

源代码:

<span style="font-family:Microsoft YaHei;font-size:14px;"> public class OurActivity extends Activity { 
    protected void onCreate(Bundle savedInstanceState); 
    protected void onStart(); 
    protected void onResume(); 
    protected void onPause(); 
    protected void onStop(); 
    protected void onDestroy(); 
 }</span>
  1. protected void onCreate(Bundle savedInstanceState)一个 Activity 的实例被启动时调用的第一个方法。一般情况下,我们都覆盖该方法作为应用程序的一个入口点,在这里做一些初始化数据、设置用户界面等工作。大多数情况下,我们都要在这里从 xml 中加载设计好的用户界面。例如:
    <span style="font-family:Microsoft YaHei;">setContentView(R.layout.main);</span>
  2. protected void onStart()该方法在 onCreate()方法之后被调用,或者在 Activity Stop状态转换为 Active状态时被调用

  3. protected void onResume() Activity Pause状态转换到 Active状态时被调用。

  4. protected void onResume()在 Activity 从 Active 状态转换到 Pause 状态时被调用。

  5. protected voidonStop() Activity Active状态转换到 Stop状态时被调用。一般我们在这里保存 Activity的状态信息。

  6. protected void onDestroy() Active被结束时调用,它是被结束时调用的最后一个方法,在这里一般做些释放资源,清理内存等工作。


4.创建一个activity

源代码:
<span style="font-family:Microsoft YaHei;font-size:14px;">public class ShowActivity extends Activity{

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
	}

	@Override
	protected void onDestroy() {
		// TODO Auto-generated method stub
		super.onDestroy();
	}

	@Override
	protected void onPause() {
		// TODO Auto-generated method stub
		super.onPause();
	}

	@Override
	protected void onRestart() {
		// TODO Auto-generated method stub
		super.onRestart();
	}

	@Override
	protected void onResume() {
		// TODO Auto-generated method stub
		super.onResume();
	}

	@Override
	protected void onStart() {
		// TODO Auto-generated method stub
		super.onStart();
	}

	@Override
	protected void onStop() {
		// TODO Auto-generated method stub
		super.onStop();
	}

}</span><span style="font-size:18px;">
</span>
AndroidManifest.xml 中通过 <activity> 节点说明 Activity,
<span style="font-family:Microsoft YaHei;"><activity android:name=".ShowActivity" android:label="@string/app_name"> 
	 <intent-filter> 
		 <action android:name="android.intent.action.MAIN" /> 
		 <category android:name="android.intent.category.LAUNCHER" /> 
	 </intent-filter> 
 </activity></span>
以上就是今天的学习,一切从小事做起,从点滴开始,我相信不积跬步,无以至千里。不积小流,无以成江海。
也就是在今天新加坡国父李光耀去世了,享年91岁,有人说时势造英雄,有人说英雄造时势,谁有说得准呢,只有经历过了才有资格去做评论,正像他说的那样“盖上棺材,然后再评价这个人。在双眼闭上前,我可能还会做些荒唐事。”一代传奇,灿然陨落,我们更多的是去感悟人生的意义和价值.....








下载方式:https://pan.quark.cn/s/a4b39357ea24 布线问题(分支限界算法)是计算机科学和电子工程领域中一个广为人知的议题,它主要探讨如何在印刷电路板上定位两个节间最短的连接路径。 在这一议题中,电路板被构建为一个包含 n×m 个方格的矩阵,每个方格能够被界定为可通行或不可通行,其核心任务是定位从初始到最终的最短路径。 分支限界算法是处理布线问题的一种常用策略。 该算法与回溯法有相似之处,但存在差异,分支限界法仅需获取满足约束条件的一个最优路径,并按照广度优先或最小成本优先的原则来探索解空间树。 树 T 被构建为子集树或排列树,在探索过程中,每个节仅被赋予一次成为扩展节的机会,且会一次性生成其全部子节。 针对布线问题的解决,队列式分支限界法可以被采用。 从起始位置 a 出发,将其设定为首个扩展节,并将与该扩展节相邻且可通行的方格加入至活跃节队列中,将这些方格标记为 1,即从起始方格 a 到这些方格的距离为 1。 随后,从活跃节队列中提取队首节作为下一个扩展节,并将与当前扩展节相邻且未标记的方格标记为 2,随后将这些方格存入活跃节队列。 这一过程将持续进行,直至算法探测到目标方格 b 或活跃节队列为空。 在实现上述算法时,必须定义一个类 Position 来表征电路板上方格的位置,其成员 row 和 col 分别指示方格所在的行和列。 在方格位置上,布线能够沿右、下、左、上四个方向展开。 这四个方向的移动分别被记为 0、1、2、3。 下述表格中,offset[i].row 和 offset[i].col(i=0,1,2,3)分别提供了沿这四个方向前进 1 步相对于当前方格的相对位移。 在 Java 编程语言中,可以使用二维数组...
源码来自:https://pan.quark.cn/s/a4b39357ea24 在VC++开发过程中,对话框(CDialog)作为典型的用户界面组件,承担着与用户进行信息交互的重要角色。 在VS2008SP1的开发环境中,常常需要满足为对话框配置个性化背景图片的需求,以此来优化用户的操作体验。 本案例将系统性地阐述在CDialog框架下如何达成这一功能。 首先,需要在资源设计工具中构建一个新的对话框资源。 具体操作是在Visual Studio平台中,进入资源视图(Resource View)界面,定位到对话框(Dialog)分支,通过右键选择“插入对话框”(Insert Dialog)选项。 完成对话框内控件的布局设计后,对对话框资源进行保存。 随后,将着手进行背景图片的载入工作。 通常有两种主要的技术路径:1. **运用位图控件(CStatic)**:在对话框界面中嵌入一个CStatic控件,并将其属性设置为BST_OWNERDRAW,从而具备自主控制绘制过程的权限。 在对话框的类定义中,需要重写OnPaint()函数,负责调用图片资源并借助CDC对象将其渲染到对话框表面。 此外,必须合理处理WM_CTLCOLORSTATIC消息,确保背景图片的展示不会受到其他界面元素的干扰。 ```cppvoid CMyDialog::OnPaint(){ CPaintDC dc(this); // 生成设备上下文对象 CBitmap bitmap; bitmap.LoadBitmap(IDC_BITMAP_BACKGROUND); // 获取背景图片资源 CDC memDC; memDC.CreateCompatibleDC(&dc); CBitmap* pOldBitmap = m...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值