0,通俗易懂 粗暴的解释Android与蓝牙Ble之间的通信 - android小草 - 博客园
1,Activiy的生命周期
2,Android中的onActivityResult和setResult方法,Intent的使用 :
【已解决】Android的蓝牙实例代码中找不到REQUEST_ENABLE_BT 看完下面的内容就理解这儿了。Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
//ACTION_REQUEST_ENABLE:Show a system activity that allows the user to turn on Bluetooth.
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
//REQUEST_ENABLE_BT:requestCode自己定义,>0即可,解释见下面
在一个主界面(主Activity)上能连接往许多不同子功能模块(子Activity上去),当子模块的事情做完之后就回到主界面,或许还同时返回一些子模块完成的数据交给主Activity处理。这样的数据交流就要用到回调函数onActivityResult。
requestCode 和 resultCode都是返回提出请求的MainActivity结果处理函数onActivityResult()使用的标识,只是requestCode 主要用来标识是MainActivity也就是请求Activity发出的哪个请求,而resultCode则是标识哪个Activity处理并返回的请求。
Intent intent = new Intent(本窗体.this, 跳转的目的窗体.class);
<1>startActivityForResult(Intent intent, int requestCode);
第一个参数:一个Intent对象
第二个参数:如果> = 0,当Activity结束时requestCode将归还在onActivityResult()中。以便确定返回的数据是从哪个Activity中返回
代码写在旧窗体,在旧窗体里new 2个Intent(目的窗体时2个不同的新窗体),requestCode用来区分是向哪个新窗体传消息,当离开旧窗体切换到新窗体时消息显示在新窗体中。新窗体通过Intent EarthIntent = getIntent();String EarthMessage = EarthIntent.getStringExtra("FromEarth");textView.setText(EarthMessage);3句把信息显示在新窗体。
<2>setResult(int resultCode, Intent data)
调用这个方法把Activity想要返回的数据返回到父Activity
第一个参数:当Activity结束时resultCode将归还在onActivityResult()中,一般为RESULT_CANCELED , RESULT_OK。
第二个参数:一个Intent对象,返回给父Activity的数据。
代码写在新窗体,在新窗体里new 1个Intent(目的窗体是旧窗体),把返回信息存入Intent对象,setResult把通过这个Intent对象把信息传给旧窗体。
<3>onActivityResult(int requestCode, int resultCode, Intent data)
第一个参数:这个整数requestCode提供给onActivityResult,是以便确认返回的数据是从哪个Activity返回的。
这个requestCode和startActivityForResult中的requestCode相对应。
第二个参数:这整数resultCode是由子Activity通过其setResult()方法返回。
第三个参数:一个Intent对象,带有返回的数据。
总结:旧窗体通过startActivityForResult(intent, requestCode)方法的requestCode来标识信息(intent中)传给2个不同的新窗体,信息在新窗体中显示;新窗体在自己的窗体类中用setResult(RESULT_OK, intent)方法把信息(intent中)传回旧窗体,旧窗体怎么知道是哪个新窗体的信息哪?在回掉函数onActivityResult(int requestCode, int resultCode, Intent data)中根据requestCode取不同的新窗体传过来的信息进行显示。
Android进阶2之Activity之间数据交流(onActivityResult的用法) - 落日小屋 - 博客频道 - CSDN.NET 例子更形象、清晰
总结:调用startActivityForResult,onActivityResult无响应的问题_雨点点_新浪博客
3,BindService和Started Service都是Service,有什么地方不一样呢:
(1). Started Service中使用StartService()方法来进行方法的调用,调用者和服务之间没有联系,即使调用者退出了,服务依然在进行【onCreate()- >onStartCommand()->startService()->onDestroy()】,注意其中没有onStart(),主要是被onStartCommand()方法给取代了,onStart方法不推荐使用了。
(2). BindService中使用bindService()方法来绑定服务,调用者和绑定者绑在一起,调用者一旦退出服务也就终止了【onCreate()->onBind()->onUnbind()->onDestroy()】。
深入理解Android的startservice和bindservice - Andye - 博客园
Android中BindService方式使用的理解(转) - Hi
Service的onServiceConnected没有被调用 - android开发实例 - 博客园
bindService是异步调用和Service进行绑定, 如果绑定成功, 则会调用ServiceConnection的onServiceConnected。当调用bindService方法后就会回调Activity的onServiceConnected,在这个方法中会向Activity中传递一个IBinder的实例,Acitity需要保存这个实例。在Service中需要创建一个实现IBinder的内部类(这个内部类不一定在Service中实现,但必须在Service中创建它)。在OnBind()方法中需返回一个IBinder实例,不然onServiceConnected方法不会调用。
4,广播
Android应用程序发送广播(sendBroadcast)的过程分析 - 老罗的Android之旅 - 博客频道 - CSDN.NET
使用registerReceiver注册BroadcastReceiver - 习以常 - 博客园
Android BroadcastReceiver介绍 - yinkai1205的专栏 - 博客频道 - CSDN.NET
Android应用程序注册广播接收器(registerReceiver)的过程分析 - 老罗的Android之旅
- 博客频道 - CSDN.NET
5,回调函数
弄明白Android 接口回调机制 - Android移动开发技术文章_手机开发 - 红黑联盟
android回调函数总结 - elleniou - 博客园
谈谈我对Java中CallBack的理解 - CodingMyWorld - 博客园
Service 回调 Activity的方法。 - win2k3net的专栏 - 博客频道 - CSDN.NET
6,Android更新UI的两种方法——handler与runOnUiThread()
Android更新UI的两种方法――handler与runOnUiThread() - 泡在网上的日子
Android:UI更新方法四:在Worker Thread中runOnUiThread直接刷新UI - 混迹于移动互联网和手机行业 - 博客频道 - CSDN.NET
android多线程与界面交互以及runOnUiThread简单应用_灰度空间_新浪博客
7,
实现展开列ExpandableListView的三种方式之SimpleExpandableListAdapter实例 - 剑萧舞蝶的专栏 - 博客频道 - CSDN.NET
8,Characteristic的读写操作
android BluetoothLE 多个 setCharacteristicNotification writeCharacteristic 失效 - 即将踏上社会的人 - 博客园
onCharacteristicChanged 回调问题 - 蓝牙Bluetooth 技术 - 德州仪器在线技术支持社区
用setCharacteristicNotification之前确认Characteristic 属性中是否具备notification功能,如果有还要确认是否禁用了此功能