登山则情满于山,观海则意溢于海。这篇文章主要讲述Android中 实现队列方式处理优先级信息相关的知识,希望能为你提供帮助。
需求:当界面在处理消息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 = https://www.songbingjia.com/android/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中 实现队列方式处理优先级信息】
推荐阅读
- Framework7开发笔记之App骨架搭建
- Android Studio V4 V7 包冲突的问题
- [LeetCode] 42. Trapping Rain Water 收集雨水
- Maven Eclipse示例
- Maven Web应用程序
- 如何在Windows上安装Maven
- Maven插件
- Lync 项目经验-34-分配公网证书 For Office Web App Server 2013
- android不是内部或外部命令,也不是可执行的程序或批处理文件