回调机制

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()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值