Android四大大组件
Activity:带界面的。
BroadcastReceiver:广播接收者,不带界面,当对应的广播事件发出来的时候,它就可以收到。
ContentProvider:内容提供者,主要用于暴露数据给其他的应用程序去使用。
Service:服务可以在后台运行的,不带界面的。
1.Service服务
1.1.服务的写法:
第一步:写个类去继承服务Service
第二步:重写服务的oncreate,ondestroy方法,OnCreate:服务对象创建的时候会执行Ondestroy: 服务对象销毁的时候会执行。
第三步: 服务需要到清单文件中注册.
2.为什么需要服务:需要去翻看文档,Java的doc的文档,一般都是程序自动生成的,在看的时候,一般都去到文档的目录下找一个叫做index.html的文档。这个是一个常识。
Android系统会让一个应用程序的进程活的尽可能的长,但是也会去回收老的进程以便于新的或者更加重要的进程可以顺畅的跑起来。
为了能够决定哪些进程先被杀死,哪些后被杀死,android系统中将进程按照优先级做了划分,优先级最低最先被干掉.然后以此类推,从而去回收系统的资源。
进程按照优先级分为5种:
第一种:前台进程,一个应用程序有组件正在运行着,获得了焦点,可以响应用户的点击触摸事件。
第二种:可视进程,一个应用程序有组件正在运行着,但是失去了焦点,只是还看得见。
第三种:服务进程,如果一个应用程序中一个service在后台长期运行着,那么就可以称之为服务进程。
第四种:后台进程,一个应用程序中没有service在后台运行,只有activity其他的组件在切换到了后台,那么就是属于后台进程。
第五种:空进程,一个应用程序中没有任何组件在运行着,那么就是属于空进程。
3.开启服务的生命周期:服务创建的时候会调用oncreate的方法 然后服务就一直在后台运行着,开启服务的时候会调用startService,那么服务的onstartCommand会执行,多次开启服务,并不会多次创建服务,服务只能被创建一次, 多次开启只会重复调用onstartCommand,服务销毁的之后会调用ondestroy方法。
开启服务,服务后会一直在后台运行着,与开启服务的组件activity没有关系了。
4.本地服务中的方法调用:本地服务的调用一般用的不多,大家可以将远程服务调用的代码好好写写。
5.远程服务调用:
5.1.第一部分--支付宝:编写支付宝的应用程序.需要有个服务.服务与早上写的类似.A)publicclassAlipayServiceextendsServiceB)自动的会覆盖onBind的方法C)编写一个私有的内部类,去继承一个由aidl文件生成的接口的Stub内部类。打开生成的.java类,发现里面有一个内部类Stub,继承了Binder,实现了IAlilpayNeixian的接口。AIDL)让编写的私有的内部类(内线)去继承Stub类//内线类去调用 pay的方法,从而完成支付
private class AlipayNeixianextends IAlipayNeixian.Stub{
@Override
public boolean callPay(Stringaccount, double money) { returnpay(account,money); } } )
在onBind方法中return内线的实例对象
@Override
publicIBinder onBind(Intent intent){
System.out.println("onBind服务被绑定了...");
returnnewAlipayNeixian();
}
编写服务中最终要被调用到的方法pay方法
publicbooleanpay(Stringaccount,doublemoney){
System.out.println( account +"帐号,支付了 "+money);
returntrue; }
到清单文件中,配置AlipayService,由于一会需要让美团可以去激活这个服务,所以需要配置隐式意图。