Java中的回调机制 Callback Presenter{ loadContacts(){ Model model = new Model(); model.queryAll(new Callback(){ void setView(List list){ view.setAdapter(list); } }); } } interface Callback{ void setView(List list); } Model{ List queryAll(Callback callback){ new Thread(){ run(){ 执行查询联系人数据库业务 (异步 启线程) callback.setView(list); } }.start(); } } 什么时候需要使用回调机制? 通常情况下 业务需要异步执行时, 我们需要在 业务流程异步执行完毕后做后续操作,这时我们 需要使用回调. 如果没有异步执行的业务,我们只需要获取方法 的返回值即可. 函数式编程 ----------------------------------------- Android中的电话操作 1>Android中的电话通信机制 2>如何使用代码拨打电话 3>如何监听电话状态 4>如何监听呼出电话 5>使用AIDL拦截呼入电话 Android中的电话通信机制 如何使用代码拨打电话 1>创建隐式意图: Intent intent=new Intent(Inent.ACTION_CALL); uri = Uri.parse("tel:15555555"); intent.setData(uri); 2>启动Activity startActivity(intent); 3>添加权限 android.permission.CALL_PHONE 如何监听电话状态 空闲状态 振铃状态 接听状态 1>获取TelephonyManager电话管理器. 2>编写一个类,扩展自PhoneStateListener. 重写相关监听方法. 3>manager.listen(listener); manager.listen(null);(取消监听) 4>清单文件中注册电话状态的监听权限. android.permission.READ_PHONE_STATE 如何监听呼出电话 1>编写一个广播接收器,接收系统广播: Intent.ACTION_NEW_OUTGOING_CALL 2>重写onReceive方法. 拦截业务 3>注册广播接收器 4>在清单文件中添加权限 android.permission.PROCESS_OUTGOING_CALLS AIDL 跨进程数据通信机制 Google 使用AIDL实现自动挂断呼入电话 (跨进程绑定service时需要使用AIDL) bindService(); Service{ onBind(){ return binder(); } } Activity Intent Service AIDL Broadcast Intent ContentProvider ContentResolver --------------------------------------- Android中的属性动画 (Property Animation) 如何实现属性动画? 我们需要借助一个类: ObjectAnimator anim; 拨号界面中的业务需求: 1>显示DialFragment中的通话记录列表. 2>显示软键盘. 3>当滚动listView时,让软键盘消失(动画). 4>当点击tvTitle时,让软键盘显示(动画). 5>当点击按键时,更新tvTitle中的文字. 6>当点击退格键时,删掉tvTitle中的最后一个文字 7>注意,在更新tvTitle时有"-" 很恶心. 提示: StringUtil{ 把带-的number转成不带-的number String AToB(String a){} 把不带-的number转成带-的number String BToA(String b){} } 8>每当更新tvTitle时,级联更新listView中的 数据. 声明一个子集合,adapter使用该子集合. 当tvTitle更新时,清空子集合,遍历总数据, 获取所需要的数据后,添加子集合中,然后 adapter.notifyDataSetChanged()
回调机制
最新推荐文章于 2023-08-27 11:04:21 发布