Android应用开发的基本概念(入门)

Android应用开发的基本概念:

前言

做游戏将近三年(主要以页游和手游),今年初公司业务发展需要转做Android,到现在已学习4个月之久,已初步搭建完成公司的SDK项目,项目闲下来使用博客备忘自己的前期的一些总结归纳(东西不是原创来自互联网,博客的一些梳理,大纲备忘),本人不喜欢文字长篇大论,简单的图表+简短的重点备忘个人认为是备忘的较好方式(能快速拉起自己的存储记忆,然后具体问题具体分析),备忘的无非是一个【流程+重点】

【小公司,目前孤军奋战、如果有遗漏或者成长建议请大牛指出!感谢,感谢!】

1 Android MVC简介:

  • 模型对象:存储着应用的数据和业务逻辑【如 : 网络、数据库、IO数据等】
  • 视图对象:知道如何在屏幕上绘制自己以及如何响应用户的输入,如用户的触摸等【如:View 、VieGroup 、Button 等组件、XML文件进行界面的描述、webView中的html+css+js】
  • 控制对象 :包含了应用的逻辑单元,是视图与模型对象的联系纽带【如:Activity、Service、过滤Filter等】

2 Android 程序设计基础

2.1 基本组件

2.1.1 Activity :

Activity 是用户与UI交互的控制层

启动和生命周期:

Android 系统会通过调用对应于其生命周期中特定阶段的特定回调方法在 Activity 实例中启动代码。 有一系列可启动Activity的回调方法,以及一系列可分解Activity的回调方法。

生命周期:

Activity状态转换:

三种常用的状态情况:

Running :

在这种状态下,Activity处于前台,且用户可以与其交互。(有时也称为“运行”状态。)

Paused :

在这种状态下,Activity被在前台中处于半透明状态或者未覆盖整个屏幕的另一个Activity—部分阻挡。 暂停的Activity不会接收用户输入并且无法执行任何代码。

Stopped:

在这种状态下,Activity被完全隐藏并且对用户不可见;它被视为处于后台。 停止时,Activity实例及其诸如成员变量等所有状态信息将保留,但它无法执行任何代码。

Activity 启动方式:

a、指定启动器Activity 在 mainfest.xml 中进行配置如:

···xml

2.1.2 Intent

一个 Intent 是一个消息Object,【请求+数据】 你能够使用从另一个 app component 请求一些动作。

Inten 的处理主要是操作系统负责:

基本操作

启动一个Activity:Context.startActivity(Intent intent);

启动一个Service:Context.startService(Intent service);

绑定一个Service:Context.bindService(Intent service, ServiceConnection conn, int flags);

发送一个Broadcast:Context.sendBroadcast(Intent intent);

两种类型:

(1):Explicit intents(显示意图).

显示意图,会指定响应这意图的组件。

(2): Implicit intents (隐含意图)

隐含意图不声明要启动的组件的类名称,而是声明要执行的操作。 该操作指定您要执行的操作,比如查看、编辑、发送或 获取 某项。 意向通常还包含与操作关联的数据,比如您要查看的地址或您要发送的电子邮件消息。根据要创建的意向,数据可能是 Uri、多种其他数据类型之一,或意向可能根本就不需要数据如:

Uri number = Uri.parse("tel:5551234");
Intent callIntent = new Intent(Intent.ACTION_DIAL, number);

注意:如果您调用了意向,但设备上没有可用于处理意向的应用,您的应用将崩溃

要确认是否存在可响应意向的可用Activity,请调用 queryIntentActivities() 来获取能够处理您的Intent 的Activity列表。 如果返回的 List 不为空,您可以安全地使用该意向

【详细可以看Internet 的匹配过程】

PackageManager packageManager = getPackageManager();
List activities = packageManager.queryIntentActivities(intent,
        PackageManager.MATCH_DEFAULT_ONLY);
boolean isIntentSafe = activities.size() > 0;
2.1.3 Context Provider

Content providers管理对结构化数据集的使用.它们封装数据,并提供了数据安全的机制.Content providers是从一个进程连接另一个进程中的数据的标准接口。其主要作用不是用于数据存储、而是给外部进程 APP 提供数据。【如我们 通讯录数据可以放在 Content providers 中等】

官方解释:其本质是对AIDL 的封装

Content providers are one of the primary building blocks of Android applications, providing content to applications. They encapsulate data and provide it to applications through the single ContentResolver interface. A content provider is only required if you need to share data between multiple applications. For example, the contacts data is used by multiple applications and must be stored in a content provider. If you don’t need to share data amongst multiple applications you can use a database directly via

2.1.4 Service

Service 是一个能在后台运行操作的应用组件,不提供用户交互

一个服务基本上有两种形式:

(1)Started

一个服务开启,当一个应用组件(例如一个activity)调用 startService()。一旦开启,一个服务将一直在后台运行,即使开启它的组件已经被销毁。通常,一个服务开启执行一个单一的操作,并且不会返回结果给调用者。

例如:下载,上传,当一个操作停止应该销毁这个服务。

(2)Bound

一个服务是“bound”当一个应用组件绑定同一个服务,【通过调用 bindService()】。一个绑定的服务提供Client-Server的接口,允许组件和服务相互作用,发送结果,得到结果,甚至访问IPC进程。一个被绑定的服务和绑定它的组件的运行时间一样。当多个组件一个服务时,当所有的绑定解除,这个服务被销毁。


2.2 Android资源组织读取和核心文件

2.2.1资源组织:

android 资源整体分两大类,分别是assets和res

如图:

a. assets。assets类资源放在工程根目录的assets子目录下,它里面保存的是一些原始的文件,可以以任何方式来进行组织。

这些文件最终会被原装不动地打包在apk文件中。如果我们要在程序中访问这些文件,那么就需要指定文件名来访问。

例如,假设在assets目录下有一个名称为filename的文件,那么就可以使用以下代码来访问它:

AssetManager am= getAssets();
InputStream is = assset.open("filename");  
  1. res。res类资源放在工程根目录的res子目录下,它里面保存的文件大多数都会被编译,并且都会被赋予资源ID。这样我们就可以在程序中通过ID来访问res类的资源。res类资源按照不同的用途可以进一步划分为以下9种子类型:

    详细见: Android 官网

Res 文件 下的文件大部分会被 【aapt资源打包工具】编译(raw 文件下除外),并在自动生成的 R.java 中生成对应的资源ID,

在程序或者资源文件中通过这些ID常量来访问指定的资源.

2.1.2资源适配选择

2.2.3资源打包、读取流程:

2.2.4 核心文件:

AndroidMainfest.xml

每个应用的根目录中都必须包含一个 AndroidManifest.xml 文件(且文件名精确无误)。 清单文件为 Android 系统提供有关您的应用的基本信息,系统必须获得这些信息才能运行任意应用代码。 此外,清单文件还可执行以下操作.

主要包含:

  • 为应用的 Java 软件包命名。软件包名称充当应用的唯一标识符
  • 描述应用的各个组件,即:构成应用的 Activity、服务、广播接收器和内容提供程序。 为实现每个组件的类命名并发布其功能(例如,它们可以处理的 Intent 消息)。根据这些声明,Android 系统可以了解这组件具体是什么,以及在什么条件下可以启动它们
  • 确定将托管应用组件的进程
  • 声明应用必须具备哪些权限才能访问 API 中受保护的部分并与其他应用交互
  • 还声明其他应用与该应用组件交互所需具备的权限
  • 列出 Instrumentation 类,这些类可在应用运行期间提供分析和其他信息。这些声明只会在应用处在开发和测试阶段时出现在清单文件中;它们会在应用发* 布之前被删除
  • 声明应用所需的最低 Android API 级别
  • 列出应用必须链接到的库

2.3 用户界面UI及常用组件及事件

2.3.1常用组件:(汇总)

  • TextView:
  • ListView
  • Tost
  • EditText
  • RadioGroup
  • RadioButton
  • CheckBox
  • Spinner
  • DatePicker
  • TimePicker
  • Button
  • Menu
  • Dialog
  • ImageView
  • ImageButton
  • ImageSwitcher
  • Gallery(拖动效果)
  • AutoComplete-TextView 、
  • GridView
  • ScrollView、
  • ProgressBar
  • SeekBar
  • Notification
  • NotificationManager(状态栏提示)
  • ProgressDialog

2.3.2 View 的事件分发机制:

2.4 Android数据存储方式

2.4.1 shared Preferences

应用程序在运行的时候,可能会随着用户的使用而保持该用户的配置信息,如上次播放时的eq设置,音量设置,上网的cookies信息等等,这些小量 的信息可以通过SharedPreferences来保持,通过SharedPreferences保持的数据为一个XML文件,位于应用程序的私有文件夹

2.4.2 Files

Android 中可以在设备本身存储设备或者外接入的存储设备中创建用于保存数据的文件。默认情况下,文件之间不能共享。用文件来存储数据可以通过

openFileOuput 获得对文件流操作。(如果文件不存在会自动创建一个文件)通过loader方法来去文件中的数据。

2.4.3 SQLite:

SQLite 是一种嵌入式关系型数据库、支持大小为2T 具有如下特征

轻量级: 编译后动态连接库小

独立:不依赖第三方软件

跨平台、且支持多语言接口

2.4.5NetWork

通过网络获编写服务端获取、保存资源。

2.4.6 contentProvider

2.5 其他

2.5 Android绘图渲染(Android游戏开发)

时间: 2024-08-10 01:22:41

Android应用开发的基本概念(入门)的相关文章

Android NDK 开发(四)java传递数据到C【转】

转载请注明出处:http://blog.csdn.net/allen315410/article/details/41845701 前面几篇文章介绍了Android NDK开发的简单概念.常见错误及处理和从第一个Hello World开始实际做一个简单的JNI开发示例,相信看完之后,大家对NDK开发有了一个概念上的认识了,那么接下来我们需要再深入一下NDK的开发,我们知道NDK开发就是使用JNI这层“协议”在Java和C之间起个“桥梁”的作用,将Java和Native C之间联立起来,让Java

Android NDK开发(四)——Java传递数据到C

转载请注明出处:http://blog.csdn.net/allen315410/article/details/41845701 前面几篇文章介绍了Android NDK开发的简单概念.常见错误及处理和从第一个Hello World开始实际做一个简单的JNI开发示例,相信看完之后,大家对NDK开发有了一个概念上的认识了,那么接下来我们需要再深入一下NDK的开发,我们知道NDK开发就是使用JNI这层"协议"在Java和C之间起个"桥梁"的作用,将Java和Nativ

利其器:Android应用开发的几个概念的区分

前言: 学习Android应用开发的时候,经常在eclipse里面看到很多名词,让人很迷惑,问别人也是说的不知所云.所以还是自己上网查找比较靠谱,参考链接都在最后. ? ? 涉案名单: Intel x86 Atom System Image Google APIs Intel x86 Atom System Image Android API Levels Android Platform Version Android SDK Version Google APIs Android versi

一起学Google Daydream VR开发,快速入门开发基础教程一:Android端开发环境配置一

原文因涉及翻墙信息,被强制删除,此文为补发! 准备工作 进入Google Daydream开发者官网,开启准备工作,官网地址:https://vr.google.com/daydream/developers/ -------------------------------------------------------------------------------------------------------------------- Google Daydream开发者网址: https

Android Wear 开发入门

大家好,我是陆嘉杰,我是一名Android开发者.我想和大家进行一些技术交流,希望越来越多的人能和我成为好朋友. 大家都知道,智能手表是下一个开发的风口,而这方面的技术又属于前沿,所以和大家分享下Android Wear的开发流程. 首先,我推荐大家使用Android Studio来进行Wear的开发,这也是谷歌推荐的,本次讲授过程也将以Android Studio作为开发集成环境进行. 下面我们来创建Android Wear项目. 请注意,Android Wear项目中同时包含mobile和w

Android开发涉及有点概念&相关知识点(待写)

前言,承接之前的 IOS开发涉及有点概念&相关知识点,这次归纳的是Android开发相关,好废话不说了.. 先声明下,Android开发涉及概念比IOS杂很多,可能有很多都题不到的.. 首先由于Android是基于Linux,而Linux又是用c山寨Unix的,但是为什么Android不用开发App,其实我也不懂,我想可能是java比较简单. 同样的,IOS为啥没用java,这个我也想可能是因为IOS是封闭的吧..晕,又废话了..好,开始吧,不过这次很多要查资料了,很多名词.单词不会啊! 首先还

Android 自定义控件开发入门(一)

作为一个有创意的开发者,或者软件对UI设计的要求比较高,你经常会遇到安卓自带的控件无法满足你的需求的情况,这种时候,我们只能去自己去实现适合项目的控件.同时,安卓也允许你去继承已经存在的控件或者实现你自己的控件以便优化界面和创造更加丰富的用户体验. 那么怎样来创建一个新的控件呢? 这得看需求是怎样的了. 1.需要在原生控件的基本功能上进行扩展,这个时候你只需要继承并对控件进行扩展.通过重写它的事件,onDraw ,但是始终都保持都父类方法的调用.如从已有的高级控件上继承,例如继承一个TextVi

Android 自定义控件开发入门(二)

上一次我们讲了一堆实现自定义控件的理论基础,列举了View类一些可以重写的方法,我们对这些方法的重写是我们继承View类来派生自定义控件的关键 我通过一个最简单的例子给大家展示了这一个过程,无论是多么复杂的自定义控件,思路总是这样子的,但是因为我们仅仅重写了onDraw方法使得大家觉得怪怪的,作为一个控件,我们居然还要为了他的实现为其增加麻烦的监听,这就不能叫做控件了. 下面再给大家介绍一个经常重写的方法法:publicboolean onTouchEvent (MotionEvent even

【Android的从零单排开发日记】之入门篇(四)——Android四大组件之Activity

在Android中,无论是开发者还是用户,接触最多的就算是Activity.它是Android中最复杂.最核心的组件.Activity组件是负责与用户进行交互的组件,它的设计理念在很多方面都和Web页面类似.当然,这种相似性主要体现在设计思想上.在具体实现方面,Android的Activity组件有自己的设计规范,同时,它能够更简便地使用线程.文件数据等本地资源. 一.Activity 的生命周期 Activity 的生命周期是被以下的函数控制的. 1 public class Activity