Android初学需要了解的一些概念

这周接触了下Android,终于大概搞懂怎么样用Android提供的组件实现一个简单的app了。一些笔记和心得如下:

【四大组件】

Activity、Service、ContentProvider、BroadcastReceiver


Activity


最常见的组件,跟页面相关。一个app大多是多个Activity组成的。Activity之间的信息交流用Intent。


ContentProvider


用于一个机子上的不同的app之间的数据交换。类似于一个服务对外提供的供外部访问的接口,其中有uri的概念。即便这个提供服务接口的app没有启动,别的app也可以增删改查其中的数据。ContentProvider以某种uri的形式提供数据,其他app用ContentResolver根据Uri去访问操作指定数据。ContentResolver还可以通过向ContentProvider注册ContentObserver达到接收数据变化的通知。


Service


非常类似于Activity。如果需要界面或者需要与用户交互,那么使用Activity否则用Service做一些后台的,消耗时间长的操作。但普通的Service不会创建新的线程来做这些操作。但作为一种特殊的Service,IntentService 会创建单独的线程用于处理耗时较多的任务。

AIDL Service通过AIDL接口定义了不同进程间的通信接口,因此客户端和服务端都需要引入这样的依赖(java RMI、或者HSF等类似于此)


BroadcastReceiver


全局的监听器。其他的监听器只能依赖于原先的进程,当原先的进程退出后监听器也消失了。但是全局的监听器有它自己的进程,只要存在与之相匹配的intent被广播出来,BroadcastReveiver总会被激发。

【其他组件】


Intent


用于在同一个app中的不同的activity中进行数据的交换。


Message/Looper

/Handler


Handler在新启动的线程里面发送Message,一般在主线程里面获取处理消息。消息被存放在MessageQueue里面,由Looper构造器构造MessageQueue。每个线程只能拥有一个MessageQueue。如果主线程不是主UI线程,那么需要自己手动创建一个Looper对象。Looper中的loop方法会不断地轮询MessageQueue取出消息。如果创建handler的Activity被finish后,Handlerd的线程也被停止和收回。


ANR异常


Android No Response,在主线程里执行需要消耗大量时间的操作会造成Android应用程序无法响应输入事件和Broadcast。


AsyncTask<

Params, Progress, Result>

【泛型】


用于异步执行工作。在UI线程中创建AsyncTask的实例并且调用其execute方法。方法里面的doInbackgroud(Params):result;onPostExecute(Result):void; onPreExecute() :void; onProgressUpdate(Progress):void 需要自己重写。在doInBackgroun中需要自己调用publishProgress(Progress):void 触发OnProgressUpdate。


Toast


一种简单的消息提示框。提示信息不会获得焦点,过一段时间会自动消失(调用makeText生成一个Toast对象,设置好属性如持续时间后,调用show() 方法展现)

【MVC】

在最重要的AndroidManifest.xml中需要注册所有用到的四大组件。

通过对xml文件的配置来定义各个Activity中界面的布局、包含的元素(如TextView、Button等等)

在程序中也可以修改这些元素的相关属性,如设置Button按钮上的文字等。

【监听和回调】

类似于js的方式实现界面上动作触发的逻辑,比如按钮被按下触发那种动作。这是一个界面程序必须要实现的。

【入门难度】

相对来说还是比较简单的,Java基础加上一些页面设计的基本知识就可以完成一个简单的demo APP。当然只是很粗糙功能很弱的那种。要想做得好,除了知道andriod的基本知识外,也需要专门的domain知识,最好还有UI方面的才能。最重要的是上手!当然有个同事或者朋友在你身边帮你解决一些刚开始容易漏掉或者没有意识到的小问题就更好了!网上有很多demo的源码可以看看或者跟着实现一下,删删改改调调,很快就能明白个所以啦。

-----------------------------------------------------------

加油!保持新鲜感!用代码实现自己的想法!

-----------------------------------------------------------

时间: 2024-11-03 22:50:49

Android初学需要了解的一些概念的相关文章

【ANDROID 初学】控件--IMAGEVIEW的使用方法

Start Android 1.图片视图(ImageView)的基本概念 2.<InameView/>与ImageView 3.神奇的ScaleType属性 当图片大小与ImageView大小不匹配的时候,可以通过该属性来调整图片与ImageView控件的位置关系. android:scaleType:  android:scaleType是控制图片如何resized/moved来匹对ImageView的size. ImageView.ScaleType / android:scaleType

【Android 初学】11、关于Android当中的线程(初级)

Start Android 1.回顾Java当中的线程概念 1)线程的两种实现方式 2)线程的生命周期 3)多线程同步 (多个线程访问同一个资源,在同) 2.MainThread与Worker Thread 1)UI相关的代码就是MainThread 2)其他代码就是WorkerThread(不允许操作UI,ProgressBar可以) 3)在一个应用程序当中,主线程通常用于接收用户的输入,以及将运算的结果反馈给用户(也就是主线程不能阻塞) 对于一些可能会产生阻塞的操作,必须放在Worker T

【Android 初学】10、Intent对象的使用

Start Android 1.Intent对象的基本概念 1)Intent是Android应用程序组件之一: 2)Intent对象在Android系统当中表示一种意图: 3)Intent当中最重要的内容是action与data: 2.Intent对象的基本使用方法 3.使用Intent在Activity之间传递数据的方法 1)在Activity之间可以通过Intent对象传递数据: 2)使用putExtra()系列方法向Intent对象当中存储数据 3)使用getXXXExtra()系列方法从

【Android 初学】2、View初步

1.View的基本概念 View就是所有控件类的父类.(文本.按钮.多选.布局.··· ···) 2.在Activity当中获取代表View的对象 使用findViewById(R.id.ppp) ;ppp表示控件的ID 例如TextView textView= (TextView)findViewById(R.id.textView); 该方法将返回一个View类型,必须使用向下转型为响应的控件. 3.设置View的属性 使用上一个textView的对象: 可以修改该控件的text属性,如:t

【Android 初学】5、控件--ImageView的使用方法

Start Android 1.图片视图(ImageView)的基本概念 2.<InameView/>与ImageView 3.神奇的ScaleType属性 当图片大小与ImageView大小不匹配的时候,可以通过该属性来调整图片与ImageView控件的位置关系. android:scaleType:  android:scaleType是控制图片如何resized/moved来匹对ImageView的size. ImageView.ScaleType / android:scaleType

【Android 初学】Activity初步

1.Activity启动流程 Android操作系统 -->  读取配置文件AndroidMainfest.xml(得知启用哪个Activity)-->  生成MainActivity对象(名字可自定义) --> 调取该Activity的onCreate()方法 --> 在该方法会读取布局文件,决定该Activity显示界面 2.Activity与布局文件的关系 所谓的布局文件就是指示Activity显示的内容 3.在Activity当中获取代表控件的对象 每一个控件在Activi

【Android 初学】7、相对布局--初步入门

Start Android  1.什么是相对布局() 相对布局是另外一种控件的摆放的方式: 相对布局是通过指定当前控件与兄弟控件或是父控件之间的相对位置,从而达到控制控件位置的目的: 2.为什么要使用相对布局 相对布局的UI性能比线性布局(嵌套太多)更好: 3.相对布局的常用属性 RelativeLayout用到的一些重要的属性: 第一类:属性值为true或false     android:layout_centerHrizontal  水平居中     android:layout_cent

【Android 初学】3、控件布局初步

什么是控件布局 所谓的控件布局方法,就是指控制控件在Activity当中的位置.大小.颜色以及其他控件样式属性的方法. 控件的布局,在android中,有两种方法: 1.使用布局文件完成控件布局(相对简单) 2.在Java代码中完成控件布局(动态布局.更灵活.也相对复杂) 布局方法分类 1.Linear Layout(最容易掌握) 线性布局:可以纵向布局.也可以横向布局. 2.Ralative Layout(最常用使用.熟悉WEB开发的人就很熟悉) 3.ListView 4.Grid View

【Android 初学】6、线性布局--深入LinearLayout

Start Android 1.LinearLayout布局的嵌套 2.layout_weight属性 该属性的值用于指定空闲空间的分配比例: match_parent   匹配父控件 wrap_content    匹配内容 这一章虽说是深入LinearLayout的布局 其关键点在于嵌套<LinearLayout></LinearLayout>一对 设置好每一级LinearLayout布局的方向(横向或纵向) 然后在每一级LinearLayout里面摆放相应的控件 最后有一个l