应用程序核心
[一点点想法]
最近又找了一本安卓的书看,越看越觉得以前了解到的实在是太少了,同时也缺乏思考,很长一段时间都是在机械的敲代码,而很少想到去想想为什么这么做,这么做有什么好处,有没有更好的办法来实现它。看到一个学长在做他们团队的一个项目的安卓前台,深感自己太low。接下来,我也是希望先打好基础然后再深入,所以我又回到了安卓的基础知识上面,一点一点把这些概念属性都弄清楚。现在我看到一个APP就会去想,像这个功能是怎么实现的,这个界面是怎么做的这么简单又美观的。我把手机上设置了显示布局边界,看到上面的边界线,我就会想,这个布局这个组件是什么样的。我觉得,这是思想上的一种进步吧。
一、应用程序的基本组件
Android的应用程序并不像C中的main()函数入口是唯一的,它可以有多个启动入口,它是由多个不同的组件组合而成的,而组件之间是通过Intent来实现通信的(Intent也是一种基本组件,这个地方可能会让人觉得很诧异)。
基本组件:
包括Activity、Service、BroadcastReceiver、ContentProvider、Intent。
Service:Service并不像Activity那样有可见的用户界面,但它的特点是能长时间在后台运行,比如说,当我们在发短信或干其他事情的时候,音乐播放器还在后台播放音乐。
BroadcastReceiver:BroadcastReceiver是拥护接受广播通知的组件当它接收到某个通知消息之后,它可以启动Activity作为相应,或者是通过NotificationMananger来作为提醒。
ContentProvider:ContentProvider可以把应用程序A的数据提供给应用程序B使用,比如说我们在发短信的时候需要使用到联系人这一应用程序的数据。
这些都只是一些理论,等接触到它们的应用再来仔细说明吧。
二、应用程序的生命周期
Android有一个特殊性就是进程无法控制自己的生命周期,即影响因素是看进程的重要性处于哪一级别,而具体影响的因素则是组件特别是Activity的状态。进程被分内为:前台进程、可见进程、服务进程、后台进程、空进程。重要程度依次降低。越不重要的进程,在内存不够的时候越容易被舍弃,即destroy。
//MainActivity import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.view.Window; import android.widget.Button; public class MainActivity extends Activity implements OnClickListener { private String number; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE);// 隐藏标题 setContentView(R.layout.activity_main); Button bt_test = (Button) this.findViewById(R.id.button1); bt_test.setOnClickListener(this); System.out.println("MainActivityonCreate"); } public void onClick(View v) { Intent intent = new Intent(); intent.setClass(MainActivity.this, O2Activity.class); this.startActivity(intent); } protected void onStop() { System.out.println("MainActivityonStop"); super.onStop(); } protected void onPause() { super.onPause(); System.out.println("MainActivityonPause"); } protected void onResume() { super.onResume(); System.out.println("MainActivityonResume"); } protected void onStart() { super.onStart(); System.out.println("MainActivityonStart"); } protected void onRestart() { super.onRestart(); System.out.println("MainActivityonRestart"); } protected void onDestroy() { super.onDestroy(); System.out.println("MainActivityonDestroy"); } }
import android.os.Bundle; import android.support.v4.app.FragmentActivity; public class O2Activity extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_o2); System.out.println("O2ActivityonCreate"); } protected void onStop() { System.out.println("O2ActivityonStop"); super.onStop(); } protected void onPause() { super.onPause(); System.out.println("O2ActivityonPause"); } protected void onResume() { super.onResume(); System.out.println("O2ActivityonResume"); } protected void onStart() { super.onStart(); System.out.println("O2ActivityonStart"); } protected void onRestart() { super.onRestart(); System.out.println("O2ActivityonRestart"); } protected void onDestroy() { super.onDestroy(); System.out.println("O2ActivityonDestroy"); } }
我们通过重写方法给它加上一个输出语句来进行测试,我们首先打开应用程序,点击按钮,到达第二个界面,在点返回键,回到第一个界面。
接下来,我们来测试当第二个Acitivity并没有完全铺满屏幕的时候的输出情况:
三、资源
资源包括:XML文件,位图文件(图片),Raw文件(如音频文件)
在这里要提到的是,我们可以新建一个Andorid XML File ,这里面有很多中类型,layout、string等等,我们也知道,在Android里面是用不了gif图片的,我们就只能一张一张的图片画,我们可以在new一个Andorid XML File的时候,勾选Animator这样的Resource Type,然后我们在里面将我们需要的动画一张张弄上去并设定好转换的时间,然后在需要这张动态图的时候调用这个文件就可以了。
还有,像微信、QQ、优酷这些APP,我们可以看到它们有一个固定的栏目,可以选择消息、联系人、动态这些,我以前一直以为这是用线程然后在一个Acitivity中画上去的,而且像QQ有消息、联系人、动态这三个选项一样,需要三个Activity,后来才发现,真是很天真,只需要一个Acitivity。我们先用一个布局比如说是LinearLayout或者是TableLayout使那些选项的位置不会随手机平台的改变而改变,再在下面添加一个空的ImageView,然后我们可以去new一个Android XML Layout File,当它点击到“联系人”时,我们就用这个新建的布局文件去替换以前那个空View。
这其中,是让当前这个Acitvity继承自FragmentActivity而不是Activity,并且用以下代码让它们发生替换:
FragmentManager fm = getSupportFragmentManager(); FragmentTransaction ft = fm.beginTransaction(); ft.replace(arg0, arg1) ft.commit();
引用资源的方法:
1、在程序中引用资源
R.resource_type.resource_name
2、在资源中引用资源
@[resource_type]/[resource_name]
<!--EndFragment-->
相关推荐
Android应用程序的核心是Activity,它是用户界面的基本单元。通过创建和管理Activity,开发者可以实现与用户的交互。多个Activity可以通过Intent进行连接,Intent不仅用于启动Activity,还可以用来传递数据。此外,...
在本文中,我们将深入探讨如何进行Android应用程序开发,特别是针对手机通信录的实现。这个项目旨在创建一个功能齐全的通信录应用,用户可以添加、删除、编辑联系人,查看联系人列表,以及直接拨打电话和发送短信给...
这个压缩包包含了88个Android应用程序的源代码样本,这些样本覆盖了各种功能和应用场景,对于Android开发者来说,它们是宝贵的参考资料和学习工具。 1. **手势识别**(GestureRecogniseSample): 手势识别是...
这篇文章将逐步揭示Android应用程序背后的设计思想,从基本的 APK 文件结构到更复杂的系统组件和编程模型。 首先,让我们深入了解 APK 文件。APK 是 Android 应用程序的基本打包格式,实质上是一个被压缩的 ZIP ...
总的来说,《Android应用程序开发与典型案例》覆盖了Android开发的核心概念和技术,提供了充足的实践机会,对于希望提升Android开发能力的人来说,是一本不可或缺的参考书。通过深入阅读和实践书中的内容,开发者...
在IT行业中,安卓(Android)是一种广泛使用的操作系统,主要用于...通过深入研究这个"好用的Android应用程序源代码",开发者不仅可以学习到安卓应用的基本构建块,还能掌握实际开发中的最佳实践,从而提升自己的技能。
在Android平台上,小程序是一种轻量级的应用形式,它允许开发者快速构建功能丰富的应用程序,而无需进行繁琐的安装过程。这个“Android小程序源代码集合”是一个极好的资源,适合初学者入门,同时也因为其简单易懂的...
本指南将详细介绍如何使用Lazarus来开发Android应用程序,特别关注2017年更新版的新特性与优化。 在2017年的版本中,Lazarus为Android开发带来了一系列改进,包括更好的兼容性、优化的性能以及更多的组件支持。首先...
【安卓应用程序实例】这个压缩包提供了11个实用的Android应用程序源代码,是学习和深入理解Android开发的宝贵资源。对于那些对Android编程感兴趣的人来说,这些实例能够帮助他们快速掌握核心概念并提升实践能力。 ...
- 活动(Activity):Android应用的核心组件,代表一个可视化的用户界面。 - 意图(Intent):用于启动活动或服务,实现应用间的通信。 - 跳转与栈管理:了解Activity的启动模式,理解任务栈的概念,掌握如何正确...
USB摄像头安卓应用程序是一种技术,允许Android设备通过USB接口与外部USB摄像头进行交互,实现拍照、录像等影像功能。这类应用程序通常涉及到Android应用层与系统内核之间的通信,这对于理解Android系统的架构和开发...
《Android应用程序设计》这本书是Android开发领域的经典之作,旨在帮助读者深入理解Android应用的开发流程和技术。本书涵盖了从基础知识到高级特性的全方位内容,对于想要踏入Android开发领域或者提升现有技能的...
Android应用程序框架是构建Android应用的核心组成部分,它为开发者提供了丰富的工具和组件,使得开发者能够高效地开发出功能丰富、用户体验良好的移动应用。在Android中,MVC(Model-View-Controller)设计模式是一...
本文将以“HelloActivity”为例,详细剖析Android应用程序的组成及其内部结构,帮助读者深入掌握Android应用的构建原理。 #### 二、HelloActivity概述 **HelloActivity** 是一个经典的入门级示例程序,旨在展示...
本资源提供的"android应用程序锁APP源码"是一个实现这一功能的实例,可以帮助开发者深入理解如何在Android系统中实现这样的安全机制。 源码分析: 1. **主活动(MainActivity)**:这是应用程序锁的核心部分,通常...
综上所述,Android应用程序之间的通信涉及到Intent的使用、BroadcastReceiver的监听、ContentProvider的数据共享以及Activity的交互。理解并熟练掌握这些概念对于开发健壮且功能丰富的Android应用至关重要。在实际...
在“四川美食”安卓应用程序APP的开发过程中,我们参考了多种相关的技术文档和行业标准,包括Android操作系统的官方文档、“四川美食”安卓应用程序APP的需求规格说明书等。 第2章 产品介绍 2.1. 产品定义 “四川...
《Android应用案例开发大全(第3版)》是Android开发者必备的一本实战指南,它涵盖了Android应用程序设计的各种关键技术和实际应用场景。源程序的压缩包包含了多个章节的示例项目,帮助读者深入理解Android开发的...