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