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 = 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中 实现队列方式处理优先级信息的更多相关文章
- Android中获取应用程序(包)的信息----PackageManager
本节内容是如何获取Android系统中应用程序的信息,主要包括packagename.label.icon.占用大小等.具体分为两个 部分,计划如下: 第一部分: 获取应用程序的packagena ...
- Android 中调试手段 打印函数调用栈信息
下面来简单介绍下 android 中的一种调试方法. 在 android 的 app 开发与调试中,经常需要用到打 Log 的方式来查看函数调用点. 这里介绍一种方法来打印当前栈中的函数调用关系 St ...
- Android中获取应用程序(包)的信息-----PackageManager的使用(一)
本节内容是如何获取Android系统中应用程序的信息,主要包括packagename.label.icon.占用大小等.具体分为两个 部分,计划如下: 第一部分: 获取应用程序的packagenam ...
- Android中获取应用程序(包)的信息-----PackageManager的使用
本节内容是如何获取Android系统中应用程序的信息,主要包括packagename.label.icon.占用大小等.具体分为两个 部分,计划如下: 第一部分: 获取应用程序的packagename ...
- 【转】Android中获取应用程序(包)的信息-----PackageManager的使用(一)
转载请注明出处:http://blog.csdn.net/qinjuning 本节内容是如何获取Android系统中应用程序的信息,主要包括packagename.label.icon.占 ...
- Java中的队列Queue,优先级队列PriorityQueue
队列Queue 在java5中新增加了java.util.Queue接口,用以支持队列的常见操作.该接口扩展了java.util.Collection接口. Queue使用时要尽量避免Collecti ...
- Android中进程生命周期的优先级
“我们不是生产者,我只是大自然的搬运工.” 学习Android最好的途径当然是强大的官方文档了,其中在Processes and Threads一节中对于进程生命周期淘汰优先级,有着详细的介绍.原文如 ...
- Android中的适配方式
1,图片适配(在不同像素密度的手机上,加载不同文件夹下的图片) 一套图(800*480,将截取的图片放置在hdpi下,小图(变形不明显), 大图(根据适配的手机,做单独的截取,比如有两款手机适配(做两 ...
- android中两种方式打开网页
一.你要打开一个网页你可以自己写一个webview,在自己的程序中就可以打开. wv = (WebView) findViewById(R.id.webView1); wv.getSettings() ...
随机推荐
- nodeJs 使用 express-http-proxy 转发请求
开发过程中经常需要用到 nodeJs做转发层 使用express配合 express-http-proxy 可以轻松的完成转发 使用过程: 安装 express-http-proxy npm inst ...
- 对BRD、MRD、PRD、FSD四类产品文档的理解
查阅相关文献并总结了在产品生命周期内比较重要的四类文档—BRD.MRD.PRD.FSD各自的含义以及用法. BRD 1.含义:BRD(business requirement document)— 商 ...
- RocketMQ入门(消费者)_3
消费者角色: 1. 推式(一般建议用推式) 2. 拉式 消费模式: 1. 集群(cluster) --均衡负载消费 2. 广播(broadcasting) --发布和订阅 ...
- DataTable行列转换
#region DataTable行列转换 /// <summary> /// DataTable行列转换 /// </summary> /// <param name= ...
- jakarta-taglibs-standard-1.1.0查找下载
- python中线程的知识点
什么是线程? 程序的执行线路.每个进程默认有一条线程.线程包含了程序的具体步骤. 多线程就是一个进程中有除主线程(默认线程)外还有多个线程. 线程与进程的关系(进程包含线程,而线程依赖进程存在) 1. ...
- 可视化svg深入理解viewport、viewbox、preserveaspectradio
直接运行此例子 深入理解svg的viewport.viewbox.preserveaspectradio实例 <!DOCTYPE html> <html lang="en& ...
- mysqli链接数据库
<?php $uid = $_GET['uid']; $host = 'localhost';$database = 'test';$username = 'root';$password = ...
- 解题(LeatestCarFee -计算最少过路费)
NowCoder今年买了一辆新车,他决定自己开车回家过年.回家过程中要经过ň个大小收费站,每个收费站的费用不同,你能帮他计算一下最少需要给多少过路费吗? 输入描述: 输入包含多组数据,每组数据第一行包 ...
- php 安装最新的redis连接扩展
用于与redis连接的Php扩展[RC表示公测,我们用的是不带RC的稳定版本]下载包地址:http://pecl.php.net/package/redis 最新稳定版本:4.3.0 下载包:# wg ...