1. 程式人生 > >Android中 實現隊列方式處理優先級信息

Android中 實現隊列方式處理優先級信息

div fragment als eth lean @override 需要 一個 原理

需求:當界面在處理消息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中 實現隊列方式處理優先級信息