WEEX-android返回键监听 (使用globalEvent)
利用weex-android
全局监听globalEvent
做的一个双击退出的小功能globalEvent
用于监听持久性事件,例如定位信息,陀螺仪等的变化。全局事件是需要额外APIs
处理的次要 API
。你能通过 addEventListener
注册事件监听,当你不再需要的时候,也可以通过 removeEventListener
取消事件监听官方文档
在WXPageActivity.java
文件中增加点击方法
public void onBackPressed(){ Map<String,Object> params=new HashMap<>(); params.put("click","back"); mInstance.fireGlobalEventCallback("androidback",params); exitByDoubleClick(); } private void exitByDoubleClick() { Timer tExit=null; if(!isExit){ isExit=true; Toast.makeText(this,"再按一次退出程序",Toast.LENGTH_SHORT).show(); tExit=new Timer(); tExit.schedule(new TimerTask() { @Override public void run() { isExit=false;//取消退出 } },2000);// 如果2秒钟内没有按下返回键,则启动定时器取消掉刚才执行的任务 }else{ finish(); System.exit(0); } }这里需要注意
mInstance
对象。开始的时候,我是自己新创建了一个WxInstance
但是发现在
vue
视图中不能有效的监听到,发现视图使用的instance
跟我这新创建的不是同一个对象。所以追了下代码,发现
WXPageActivity
继承了一个AbsWeexActivity
,而在AbsWeexActivity
中有个mInstance
对象,我们使用的就是这个对象。然后在vue
视图中注册全局监听事件
<script> const globalEvent = weex.requireModule('globalEvent') const eventModule = weex.requireModule('event') export default { name: 'App', created: function () { var objThis = this globalEvent.addEventListener('androidback', function (e) { if(objThis.$route.path=='/index'||objThis.$route.path=='/login') { eventModule.closeApp() } else { objThis.$router.go(-1) } }) }, } </script>
eventModule.closeApp()
是在eventModule
中新增的module方法.module
的使用前面我们说过了 WEEX-android播放背景音乐 (使用module)@JSMethod(uiThread = false) public void closeApp() { System.exit(0); }
相关推荐
xiaobo0 2019-12-29
junzaivip 2019-11-03
JxMY 2019-07-01
yaonga 2019-07-01
kangtingting0 2019-07-01
hhbbeijing 2019-07-01
yaonga 2019-07-01
凌燕 2019-07-01
mht 2019-07-01
hhbbeijing 2019-07-01
Yvettre 2019-06-30
DaLei 2019-06-30
JxMY 2019-06-30
junzaivip 2019-06-30
JxMY 2019-06-30
DaLei 2019-06-30
hhbbeijing 2019-06-30