Weex控制Android返回键解决方案
正在深入倒腾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返回键解决方案相关推荐
- 如何添加Android返回键的退出功能
环境:Cocos2dx v3.5 经网上搜索资料知道有两种方法可以实现Android返回键的退出功能,下面分别说明. 1.修改java代码 首先,在Cocos2dx的源文件中找到Cocos2dxGLS ...
- h5制作app,处理跳转翻页动画效果及android返回键路由跳转问题
在h5制作的app中,设计路由跳转及跳转翻页动画是最必要的.其中有很多需要注意的问题,分享下小编的处理方式~ 一.翻页效果 首先,跳转翻页动画的监控,因为小编是用vue学的,所以在app.vue中监控 ...
- Flutter针对Android返回键回到桌面最靠谱的方法
Flutter针对Android返回键回到桌面最靠谱的方法 初衷:看了网上五花八门的方法改什么MainActivity和增加一个Java类,这简直让没有接触过安卓的前端一头雾水,咱搞flutter就是 ...
- android返回键方法,Android按返回键(后退键)Back键事件捕获的两种方法
package zhangphil.back; import android.support.v7.app.ActionBarActivity; import android.util.Log; im ...
- android 返回键退出程序了吗?
我在一个Activity中启动一个Service. Service每一秒打印当前时间. 服务启动后,在Activity上按了一下返回键. 这时候回到Android桌面了.看不到Activity. 可是 ...
- Android 返回键的处理
多网友不明确怎样在Android平台上捕获Back键的事件.Back键是手机上的后退键,一般的软件不捕获相关信息可能导致你的程序被切换到后台.而回到桌面的尴尬情况,在Android上有两种方法来获取该 ...
- Android返回键
感谢大佬:https://www.cnblogs.com/qiluboy/p/5308310.html Android中back键和home键的区别: back键 Android的程序无需刻意的去退出 ...
- Android 返回键(后退键)Back键事件捕获的两种方法
在开发中退出应用,有时候需要对back键进行监听控制,下面是捕获Back键的两种方式,复写Activity的这两个方法: 方式一: @Overridepublic void onBackPressed ...
- android 返回键 键盘,关于Android返回键关闭键盘和返回问题...求大神ING~
关于 安卓的返回键, 打开输入法的时候, 我关闭输入法习惯性用后退按钮的, 按后退后,输入法关闭了,但是ionic也跟着一起后退了, 这个有解决方案吗?网上说返回键是有优先级的,但是这个不知道怎 ...
最新文章
- 如何查看CISCO FWSM上ACL分区的空闲资源
- luogu4677山区建小学题解--区间DP
- Map 3D 2013中的AcMapMap.GroupModified 和AcMapMap.LayerModified 事件的参数变化
- android版多功能日历,欢迎大家测试
- MacOS Big Sur软件打开“您没有权限打开应用程序”解决办法
- Python常用的几种去重方式
- SM37作业条目的存储表
- 美女晕倒怎么办?二哈:这不是一滋就醒......
- PHP怎么抛出错误,php – 从“正确”来源抛出错误
- Atitit layout art 布局的艺术目录1. SpringLayout 类 弹簧布局管理器 12. BoxLayout( html默认布局) 11.SpringLayout
- 为什么说前端开发难?前端开发难在哪里?
- MATLAB 指定线型和颜色
- C++中优先队列priority_queue的基础用法
- import time python_Python——入门级(import 模块)
- 使用nginx在指定端口做反向代理
- 【中秋系列】马上中秋了,给老板写了个猜灯谜小脚本,猜到的越多奖金就越高?赚翻了~
- 使用脚本编写 Vim 编辑器,第 1 部分: 变量、值和表达式
- java中的i/o体系结构及流分类
- 大盘点!进口+国产28款分子POCT设备分析
- 拖延症:关于如何停止拖延的科学指南