正在深入倒腾weex,希望可以将weex用在项目中。这里找出了weex控制Android返回键的方法。

需求

项目使用的是Vue+VueRouter的单页应用来写Weex的,现有以下需求。

  • 当页面不在首页上时,返回上一页面。 this.$router.go(-1)

  • 当页面在首页是,关闭当前Android应用

解决方案

Android和Weex的通信

Android to Weex

使用的是globalEvent来实现的。我们在 Android 的返回按钮事件中触发 globalEvent,在 Weex 中监听该 globalEvent

Android

public void onBackPressed(){Map<String,Object> params=new HashMap<>();params.put("name","returnmsg");mWXSDKInstance.fireGlobalEventCallback("androidback",params);
}

Weex

globalEvent.addEventListener('androidback', function (e) {// 这里就可以做返回事件操作了,如返回上一页或退出应用// that.$router.go(-1)// weex.requireModule('close').closeApp()
})

Weex to Android

而Weex对Android的通信使用Module扩展来实现。通过在Android中创建WXModule并在Application中注册后,Weex调用该Module触发Android事件。下面我们来一步步实现。

1. Android中创建CloseModule

public class CloseModule extends WXModule {@JSMethod(uiThread = false)public void closeApp() {LogUtil.e("触发关闭效果");CacheActivity.finishActivity();}
}

2. 在Application中注册Module

public class WXApplication extends Application {@Overridepublic void onCreate() {super.onCreate();InitConfig config = new InitConfig.Builder().setImgAdapter(new ImageAdapter()).build();WXSDKEngine.initialize(this, config);try {...WXSDKEngine.registerModule("close", CloseModule.class);...} catch (WXException e) {e.printStackTrace();}}
}

3. 在Weex中使用

weex.requireModule('close').closeApp()

这样调用Module之后就可以对Android做许多事情了。

退出Activity

这里我还遇到了一个问题,就是在Weex提供的WXModule中如何退出Activity,解决方案为android 关闭多个或指定activity,这篇文章让我可以非常优雅的管理我的Activity。简单写下用法.
1. 在每个Activity的onCreate方法中将Activity对象添加到List中

@Override
protected void onCreate(Bundle savedInstanceState) {...CacheActivity.addActivity(NetworkActivity.this);
}

2. 在Module中去关闭Activity

CacheActivity.finishActivity();

3. 当然,别忘了把CacheActivity的代码贴到项目中去

package com.weex.sample.utlis;import android.app.Activity;
import java.util.LinkedList;
import java.util.List;public class CacheActivity {public static List<Activity> activityList = new LinkedList<Activity>();public CacheActivity() {}/*** 添加到Activity容器中*/public static void addActivity(Activity activity) {if (!activityList.contains(activity)) {activityList.add(activity);}}/*** 便利所有Activigty并finish*/public static void finishActivity() {for (Activity activity : activityList) {activity.finish();}}/*** 结束指定的Activity*/public static void finishSingleActivity(Activity activity) {if (activity != null) {if (activityList.contains(activity)) {activityList.remove(activity);}activity.finish();activity = null;}}/*** 结束指定类名的Activity 在遍历一个列表的时候不能执行删除操作,所有我们先记住要删除的对象,遍历之后才去删除。*/public static void finishSingleActivityByClass(Class<?> cls) {Activity tempActivity = null;for (Activity activity : activityList) {if (activity.getClass().equals(cls)) {tempActivity = activity;}}finishSingleActivity(tempActivity);}}

Over!继续倒腾Weex中……遇到问题继续总结。欢迎留言交流~

关于作者

VioletJack,移动、前端工程师,两年移动端工作经验、一年前端工作经验。现专注于移动前端的学习和开发。擅长Android开发和Vue前端开发。会定期产出关于Android、Vue、移动前端相关的博文。欢迎大家关注我,我会用心维护和经营好博客,多产出高质量文章。同时也希望我所写的东西可以帮到有需要的朋友。
新浪微博: http://weibo.com/u/2640909603
掘金:https://gold.xitu.io/user/571...
CSDN: http://blog.csdn.net/violetja...
简书: http://www.jianshu.com/users/...
Github: https://github.com/violetjack

Weex控制Android返回键解决方案相关推荐

  1. 如何添加Android返回键的退出功能

    环境:Cocos2dx v3.5 经网上搜索资料知道有两种方法可以实现Android返回键的退出功能,下面分别说明. 1.修改java代码 首先,在Cocos2dx的源文件中找到Cocos2dxGLS ...

  2. h5制作app,处理跳转翻页动画效果及android返回键路由跳转问题

    在h5制作的app中,设计路由跳转及跳转翻页动画是最必要的.其中有很多需要注意的问题,分享下小编的处理方式~ 一.翻页效果 首先,跳转翻页动画的监控,因为小编是用vue学的,所以在app.vue中监控 ...

  3. Flutter针对Android返回键回到桌面最靠谱的方法

    Flutter针对Android返回键回到桌面最靠谱的方法 初衷:看了网上五花八门的方法改什么MainActivity和增加一个Java类,这简直让没有接触过安卓的前端一头雾水,咱搞flutter就是 ...

  4. android返回键方法,Android按返回键(后退键)Back键事件捕获的两种方法

    package zhangphil.back; import android.support.v7.app.ActionBarActivity; import android.util.Log; im ...

  5. android 返回键退出程序了吗?

    我在一个Activity中启动一个Service. Service每一秒打印当前时间. 服务启动后,在Activity上按了一下返回键. 这时候回到Android桌面了.看不到Activity. 可是 ...

  6. Android 返回键的处理

    多网友不明确怎样在Android平台上捕获Back键的事件.Back键是手机上的后退键,一般的软件不捕获相关信息可能导致你的程序被切换到后台.而回到桌面的尴尬情况,在Android上有两种方法来获取该 ...

  7. Android返回键

    感谢大佬:https://www.cnblogs.com/qiluboy/p/5308310.html Android中back键和home键的区别: back键 Android的程序无需刻意的去退出 ...

  8. Android 返回键(后退键)Back键事件捕获的两种方法

    在开发中退出应用,有时候需要对back键进行监听控制,下面是捕获Back键的两种方式,复写Activity的这两个方法: 方式一: @Overridepublic void onBackPressed ...

  9. android 返回键 键盘,关于Android返回键关闭键盘和返回问题...求大神ING~

    关于 安卓的返回键,  打开输入法的时候, 我关闭输入法习惯性用后退按钮的,  按后退后,输入法关闭了,但是ionic也跟着一起后退了,  这个有解决方案吗?网上说返回键是有优先级的,但是这个不知道怎 ...

最新文章

  1. 如何查看CISCO FWSM上ACL分区的空闲资源
  2. luogu4677山区建小学题解--区间DP
  3. Map 3D 2013中的AcMapMap.GroupModified 和AcMapMap.LayerModified 事件的参数变化
  4. android版多功能日历,欢迎大家测试
  5. MacOS Big Sur软件打开“您没有权限打开应用程序”解决办法
  6. Python常用的几种去重方式
  7. SM37作业条目的存储表
  8. 美女晕倒怎么办?二哈:这不是一滋就醒......
  9. PHP怎么抛出错误,php – 从“正确”来源抛出错误
  10. Atitit layout art 布局的艺术目录1. SpringLayout 类 弹簧布局管理器 12. BoxLayout( html默认布局) 11.SpringLayout
  11. 为什么说前端开发难?前端开发难在哪里?
  12. MATLAB 指定线型和颜色
  13. C++中优先队列priority_queue的基础用法
  14. import time python_Python——入门级(import 模块)
  15. 使用nginx在指定端口做反向代理
  16. 【中秋系列】马上中秋了,给老板写了个猜灯谜小脚本,猜到的越多奖金就越高?赚翻了~
  17. 使用脚本编写 Vim 编辑器,第 1 部分: 变量、值和表达式
  18. java中的i/o体系结构及流分类
  19. 大盘点!进口+国产28款分子POCT设备分析
  20. 拖延症:关于如何停止拖延的科学指南

热门文章

  1. 软件文本框横线_免费开源剪辑软件Shotcut推荐和使用教程
  2. Android之从Camera捕获图像讲解
  3. Java学习笔记11
  4. Swift JSON转模型Xcode插件
  5. iOS进阶之路由MGJRouter-1(13)
  6. (012) java后台开发之Apache与Tomcat有什么关系和区别
  7. 函数嵌套 lisp表达式求值
  8. 如何阻止子元素触发父元素的事件
  9. 首字母大写 -freeCodeCamp
  10. Cocos2d-x Touch事件处理机制