Android中 实现队列方式处理优先级信息

登山则情满于山,观海则意溢于海。这篇文章主要讲述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中 实现队列方式处理优先级信息】 


    推荐阅读