Android初级第三次小结

Service

服务

四大组件之一     没有界面,运行在后台

要素:

1、继承Service

2、在清单文件里面注册

<name = 包名 + 类名>

生命周期:

打开服务:

startService(Intent intent)

生命周期:

onCreat()  onStartConmmand()

关闭服务:

stopService(Intent intent);

注意:1、通过startService打开的服务跟Activity之间的联系比较松散(activity关闭服务不会死掉)

2、Service打开之后继续调用startService只会调用 onStartConmmand()

3、通过startService打开的Service只能通过stopservice关闭

ServiceConnection conn = new ServiceConnection() {

@Override

public void onServiceDisconnected(ComponentName name) {

//绑定异常调用

}

@Override

public void onServiceConnected(ComponentName name, IBinder service) {

//绑定成功,并返回一个非空的Ibinder类型对象时调用

}

};

绑定服务

绑定服务的时候,界面关闭掉,服务随之关闭。绑定成功的时候可以得到服务返回的数据。

Intent service = new Intent(this, MyService.class);

//绑定服务

bindService(service , conn, Context.BIND_AUTO_CREATE);

//Context.BIND_AUTO_CREATE  当服务不存在,默认去创建服务

解除绑定:

unbindService(conn);

绑定Service获取服务返回的消息

1、绑定成功

onBinder()会返回IBinder类型的对象

2、声明一个类去接触Binder(implement IBinder)

3、在声明的类中声明一个方法

4、在 onBinder返回声明的类的对象

5、在Activity中的ServiceConnection 类型的对象中的onServiceConnected()中接收返回的对象

starService  + binderService

广播接受者

BroadcastReceiver

广播机制

单向,群发。

创建:

1、继承BroadcastReceiver

2、在清单文件中注册

注册:

1、清单文件中注册

2、代码中注册

例子:

接收短信

1、权限:

<uses-permission android:name="android.permission.RECEIVE_SMS"/>

2、设置广播接收者的过滤条件

a、在清单文件中注册

<intent-filter >

<action android:name="android.provider.Telephony.SMS_RECEIVED"/>

</intent-filter>

b、在代码中注册

receiver = new MyReceiver();

IntentFilter filter = new IntentFilter();

filter.addAction("android.provider.Telephony.SMS_RECEIVED");

/     /注册广播接受者

registerReceiver(receiver , filter );

//注销广播接收者

unregisterReceiver(receiver);

清单文件中注册与代码中注册的区别

1、 清单文件中注册 进程不存在 只要过滤条件匹配就能接收广播

2、代码中注册  使用灵活  进程不存在则接收不了

应用本身也可以发广播

可以被应用本身的广播接收者接收,也可以被其他应用的广播接收者接收

//发送广播

Intent intent = new Intent();

intent.putExtra("key", "ssssss");

intent.setAction("com.xinbo.mysms");

sendBroadcast(intent );

Intent

1、显式意图   (指定要打开的目标)

2、隐式意图

通过隐式意图打开界面:

1、在清单文件为Activty设置过滤条件

<intent-filter >

<action android:name="com.yinan"/>

<category android:name="android.intent.category.DEFAULT"/>

</intent-filter>

2、Intent intent = new Intent();

intent.setAction("com.yinan");

startActivity(intent );

1、显式意图  只能打开本应用的界面    只能打开一个

2、隐式意图   可以打开本应用也可以打开其他应用的界面    可以开启多个以供选择

时间: 2024-10-12 17:48:01

Android初级第三次小结的相关文章

Android反编译(三)之重签名

Android反编译(三) 之重签名 [目录] 1.原理 2.工具与准备工作 3.操作步骤 4.装X技巧 5.问题 1.原理 1).APK签名的要点 a.所有的应用程序都必须有数字证书 ,Android系统不会安装一个没有数字证书的应用程序: b.Android程序包使用的数字证书可以是自签名的,不需要一个权威的数字证书机构签名认证: c.数字证书都是存在有效期的,Android只是在应用程序安装的时候才会检查证书的有效期.如果程序已经安装在系统中,即使证书过期也不会影响程序的正常功能. d.A

Android学习Scroller(三)——控件平移划过屏幕 (Scroller简单使用)

MainActivity如下: package cc.cn; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.app.Activity; /** * Demo描述: * Scroller使用示例--让控件平移划过屏幕 * * 参考资料: * http://blog.cs

android listview级联三菜单选择地区,本地数据库sqlite级联地区,item选中不变色

前言:因为找了N多网上的资源都没有好的解决方案,别人都是只给思路没给具体源码,真TMD纠结,干嘛求别人,自己动手才是真,最痛恨那些所谓大牛的作风,给了点点代码就让别人去想,你让我们这种小白情何于堪!!!!!!此例是基于listview来实现本地sqlite实现的! 二话不说,程序猿求的是有图有真相有源码!大家下载后有什么问题可以找到本人:QQ508181017 核心代码如下 1.数据库操作类 package com.icq.demo.db; import java.util.ArrayList;

Android 性能优化 三 布局优化ViewStub标签的使用

小黑与小白的故事,通过虚拟这两个人物进行一问一答的形式来共同学习ViewStub的使用 小白:Hi,小黑,ViewStub是什么?听说可以用来进行布局优化. 小黑:ViewStub 是一个隐藏的,不占用内存空间的视图对象,它可以在运行时延迟加载布局资源文件.(更多详细的API等信息可以查看官方文档ViewStub),计算机行业一向是实践里面出真知,下面用一个例子演示下效果. 小黑:说说概念只是为了概括性的了解下,还是用个实例来演示下.先来创建一个Activity中使用的布局文件,文件名是:act

Android学习Scroller(三)

MainActivity如下: package cc.testscroller2; import android.os.Bundle; import android.app.Activity; /** * Demo描述: * 实现可以拉动后回弹的布局. * 类似于下拉刷新的. * * 参考资料: * 1 http://gundumw100.iteye.com/blog/1884373 * 2 http://blog.csdn.net/gemmem/article/details/7321910

android 实践项目三

android 实践项目三 本周我主要完成的任务是将代码进行整合,然后实现百度地图的定位与搜索功能.在这次实现的 图形界面如下: 在本周的工作中主要的实现出来定位与收索的功能,在地图中能实现了定位,显示当前的位置, 不知到为什么不显示地图,经过查找资料可能因为当前的SDK本版太高了,不匹配.所以在下周 图像的显示问题.下面是我的主要贴上我的布局代码 地图的布局: 本周的总结 做项目是学习知识最快的方式,即能让我们碰见各种问题,也让我们去解决各种问题.在项目中感觉自己 的水平有限,还需要更加努力的

android自定义控件(三)ProgressBar

1.ProgressBar有两个进度,一个是android:progress,另一个是android:secondaryProgress.比如视频的缓存进度以及播放进度. 在这里缓存的进度就可以是android:secondaryProgress,而播放进度就是android:progress. 2.ProgressBar分为确定的和不确定的 二.style 1.Widget.ProgressBar.Horizontal <style name="Widget.ProgressBar.Ho

三、Android学习第三天——Activity的布局初步介绍(转)

(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 三.Android学习第三天——Activity的布局初步介绍 今天总结下Activity相关布局的一些知识: Activity最简单跟常用的布局分为两种: ①LinearLayout -- 线性布局 ②TableLayout -- 表格布局 ③RelativeLayout -- 相对布局(今后将会频繁的使用到这个布局) 下面来简单总结下前两种(线性/表格)布局当中常用到

Android Fragment使用(三) Activity, Fragment, WebView的状态保存和恢复

Android中的状态保存和恢复 Android中的状态保存和恢复, 包括Activity和Fragment以及其中View的状态处理. Activity的状态除了其中的View和Fragment的状态之外, 还需要用户手动保存一些成员变量. Fragment的状态有它自己的实例状态和其中的View状态, 因为其生命周期的灵活性和实际需要的不同, 情况会多一些. 根据源码, 列出了Fragment中实例状态和View状态保存和恢复的几个入口, 便于分析查看. 最后专门讲了WebView状态保存和