Android记录

记录1:

android四大组件:

     Activity:界面,表示一个可视化的用户界面,关注一个用户从事的事件。

     intent:交互,如Activity之间的跳转,数据传递;它包括component name等。广播接收者(Broadcast receivers),仅是接受广播公告并作出相应的反应。所有的接受者继承自BroadcastReceiver基类。

    service:服务,没有一个可视化用户界面,而是在后台无期限地运行。每个服务都继承自Service基类。每个服务类在AndroidManifest.xml中有相应的<service>声明。服务可以通过Context.startService()Context.bindService()启动。像活动(activities)和其他组件一样,服务(services)运行在应用程序进程中的主线程中。

    content provider:存储。使一个应用程序的指定数据集提供给其他应用程序。这些数据可以存储在文件系统中、在一个SQLite数据库、或以任何其他合理的方式。内容提供者继承自ContentProvider 基类并实现了一个标准的方法集,使得其他应用程序可以检索和存储数据。然而,应用程序并不直接调用这些方法。相反,替代的是它们使用一个ContentResolver对象并调用它的方法。ContentResolver能与任何内容提供者通信,它与提供者合作来管理参与进来的进程间的通信。只有需要在多个应用程序间共享数据时才需要内容提供者。例如,通讯录数据被多个应用程序使用,且必须存储在一个内容提供者中。如果你不需要在多个应用程序间共享数据,你可以直接使用SQLiteDataBase。

当接收到ContentResolver发出的请求后,内容提供者被激活。而其它三种组件——活动、服务和广播接收者,被一种叫做意图(intent)的异步消息激活。意图是一个保存着消息内容的Intent对象。对于活动和服务来说,Intent对象指明了请求的操作名称以及作为操作对象的数据的URI和其它一些信息。例如,它可以传递对活动的一个请求,让它为用户显示一张图片,或者让用户编辑一些文本。而对于广播接收者而言,Intent对象指明了广播的行为。例如当照相按钮被按下,它可以对所有感兴趣的对象广播。 

通过传递一个Intent对象至Context.startActivity()Activity.startActivityForResult()以载入(或指定新工作给)一个活动。相应的活动可以看到初始的意图,这个意图通过getIntent() 方法来查看激活活动。Android调用活动的onNewIntent()方法传递任何后续的意图。


Androidmanifest.xml为配置文件。每个组件都需要在此文件中进行配置。

每添加一个Activity都要在Androidmanifest.xml里面注册一次。配置了intentfilter属性的Activity最先启动。


AppWidgetProviderInfo为App Widget提供元数据,如布局,更新频率等;AppWidgetProvider定义了AppWidget的基本生命周期函数。

AppWidget放在home下,如时钟,它使用onReceive函数接收广播事件,根据事件内容调用onUpdate,onDeleted,onEnabled,onDisabled。


<activity>元素用于声明活动,<service> 元素用于声明服务,<receiver> 元素用于声明广播接收者,而<provider>元素用于声明内容提供者。清单文件中未进行声明的活动、服务以及内容提供者将不为系统所见,从而也就不会被运行。然而,广播接收者既可以在清单文件中声明,也可以在代码中动态的创建(作为BroadcastReceiver对象)且调用Context.registerReceiver()方式注册到系统。

一个组件可以拥有任意数量的intent过滤器,每个声明一系列不同的能力。如果它没有包含任何过滤器,它将只能被显式声明了目标组件名称的意图激活。对于广播接收者,它在代码中创建并注册intent过滤器,直接作为IntentFilter的对象实例化。其它过滤器则在清单文件中设置。

简单地讲,任务是用户体验上的一个“应用程序”,是排成堆栈的一组相关活动

亲和度和新任务(Affinities and new tasks)
启动模式(Launch modes)
通过给定活动一个意图过滤器" android.intent.action.MAIN"作为指定行为(action)和" android.intent.category.LAUNCHER"指定种类(category),活动就被设置为任务的入口点了。


组件运行于哪个进程中由清单文件控制。组件元素——<activity><service><receiver><provider>,都有一个process属性可以指定组件运行在哪个进程中。这个属性可以设置为每个组件运行在自己的进程中,或者某些组件共享一个进程而其他的不共享。他们还可以设置为不同应用程序的组件运行在同一个进程中——假设这些应用程序共享同一个Linux用户ID且被分配了同样的权限。<application>元素也有process属性,为所有的组件设置一个默认值。


线程在代码中是用标准的Java线程对象创建的,Android提供了一些方便的类来管理线程——Looper用于在线程中运行消息循环、Handler用户处理消息、HandlerThread用户设置一个消息循环的线程。


服务生命周期
R.layout.main是表示布局资源文件main.xml编译后的对象,Eclipse插件会自动在R.java文件中创建这个引用。每个View对象都有一个关联的ID,来唯一标识它。当应用程序被编译时,这个ID作为一个整数引用。XML中的ID语法如下: android:id="@+id/my_button"

字符串前的@符号表示XML解析器应该解析和扩展剩下的ID字符串,并把它作为ID资源。+符号表示这是一个新的资源名字,它必须被创建且加入到我们的资源(R.java文件,R是Resource)。Android框架提供一些其他的ID资源。当引用一个Android资源ID时,你不需要+符号,但是你必须添加android包名字空间,如下:android:id="@android:id/empty"

一个元素XML元素的名字对应到一个Java类,因此一个<TextView>元素在你的UI中创建一个TextView,一个<linearLayout>元素创建一个LinearLayout的视图组。当你加载一个布局资源时,Android系统初始化这些运行时对象,对应你的布局中的元素。XML元素的属性对应到一个Java类的方法。每个布局文件必须包含一个根元素,根元素必须是一个View或ViewGroup对象。一旦你已经定义了根元素,你可以添加额外的layout对象或widgets作为子元素,逐步地构建一个视图层次定义你的布局。


android:layout_weight="1"权重

列表布局:是一个ViewGroup以列表显示它的子视图(view)元素,列表是可滚动的列表。列表元素通过ListAdapter自动插入到列表。

ListAdapter:扩展自 Adapter,它是 ListView和数据列表之间的桥梁。ListView可以显示任何包装在ListAdapter中的数据。

该类提供两个公有类型的抽象方法:

  1. public abstract boolean  areAllItemsEnabled () :表示ListAdapter中的所有元素是否可激活的?如果返回真,即所有的元素是可选择的即可点击的。
  2. public abstract boolean  isEnabled (int position) :判断指定位置的元素是否可激活的?



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值