Android中 实现队列方式处理优先级信息
2018-03-03 12:10
417 查看
需求:当界面在处理消息A时,突然接收到消息B,需要立马显示B的信息,然后再继续显示消息A,或者接收到消息C,再显示完消息A后再显示消息C;
原理很简单 在一个轮询中,查询消息列表中的元素,先处理优先级最高的那一个,之后再处理优先级次高的那一个;
先做一个对象类
再做一个保存消息的列表
再做一个轮询的机制
处理插入列表信息
对插入的消息进行排序
原理很简单 在一个轮询中,查询消息列表中的元素,先处理优先级最高的那一个,之后再处理优先级次高的那一个;
先做一个对象类
private class Obj{ int val; int times; public Obj(int val, int times){ this.val = val; this.times = times; } }
再做一个保存消息的列表
List<Obj> mList = new ArrayList<fragment_1.Obj>();
再做一个轮询的机制
private Runnable handlermsg_run = new Runnable() { @Override public void run() { if (mList.size() != 0) { Obj val = mList.get(0); int tt = doSomething(val); state.setText(val.val+" + " + tt); if (tt == 0) { mList.remove(0); tv.setText(getList(mList)); System.out.println("- remove - " + val.val + ">> " + getList(mList)); } } han.postDelayed(this, 500); } }; han = new Handler(Looper.getMainLooper()); han.post(handlermsg_run);
处理插入列表信息
private void insert(int random) { int times = 5; int newValue = random; synchronized (mList) { if (mList.size() == 0) mList.add(new Obj(random, times)); else if (mList.get(0).val != newValue) { boolean sHas = false; for (Obj obj : mList) { if (obj.val == newValue) { sHas = true; break; } } if (!sHas) { mList.add(0, new Obj(newValue, times)); sort(mList); } } } }
对插入的消息进行排序
private static Comparator<? super Obj> comparator = new Comparator<Obj>() { @Override public int compare(Obj arg0, Obj arg1) { return arg0.val - arg1.val; } }; private static void sort(List<Obj> mList) { Collections.sort(mList, comparator); }
相关文章推荐
- Android中Activity处理返回结果的实现方式
- Android分享到腾讯微博,信息,新浪微博等等,的实现方式
- Android中通过拨号调起应用的实现方式及特殊情况处理
- Android中Activity处理返回结果的实现方式
- 【java基础】阻塞队列,优先级队列实现方式
- Android 分享到腾讯微博,新浪微博,信息,等等的实现方式
- ANDROID中ACTIVITY处理返回结果的实现方式
- Android中activity处理返回结果的实现方式
- Android Intent分享到腾讯微博,信息,新浪微博等等,的实现方式
- 优先级队列:关键字小的优先处理。数组结构实现的优先级队列
- Android中处理崩溃异常 Android捕获全局异常信息并实现上传
- 【Android图像处理】实现镜面滤镜的另一种方式
- 【Android开发】图形图像处理技术-实现Android动画的两种方式
- Android中Activity处理返回结果的实现方式
- 简单的中文信息处理C#实现代码片段
- 系出名门Android(10) - HTTP 通信, XML 解析, 通过 Hander 实现异步消息处理
- 系出名门Android(10) - HTTP 通信, XML 解析, 通过 Hander 实现异步消息处理
- 系出名门Android(10) - HTTP 通信, XML 解析, 通过 Hander 实现异步消息处理
- java中关于优先级队列的实现
- 数据结构实现(优先级队列及堆排序类模板)