资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

android队列,android消息队列数据结构

android怎样编写延时消息队列

最早的时候我下过一个2005EE版,怎么也安装不上,后来发现原来是EE不支持xp =_= , 然后就下 .... 本机没有安装过消息队列,找出系统盘安装消息队列组件,在组件安装中

创新互联是一家专注于成都网站设计、网站制作与策划设计,通道网站建设哪家好?创新互联做网站,专注于网站建设十年,网设计领域的专业建站公司;建站业务涵盖:通道等地区。通道做网站价格咨询:18982081108

[img]

Android之LinkList

可以和ArrayList实现对比下 Android之ArrayList

ArrayList 实现多了一个AccessRondom 接口,少了Deque 接口

LinkList 实现多了Deque接口,少了AccessRandom接口

想了解AccessRandom接口可以参看 AccessRandom接口有啥用

Deque接口顾名思义,队列,说明LinkList 支持队列操作

来看看内部属性

官方文档对LinkList 的解释是双向链表,那么很容易理解这里保留first ,last 指针的意义了,就是为了方便双向遍历和插入

本身添删改查没有太多要说,注意下按索引遍历,先是算下inde与size /2 比较下,然后决定是从头部开始遍历还是尾部开始遍历。

android怎么实现任务队列

主要就是有一个线程队列,维护这些任务,这里没有用到Queue而是用List是考虑到显示的问题。

android 中,怎么清除一个Handler里的所有消息队列?有什么方法么

final void removeMessages(int what)

Remove any pending posts of messages with code 'what' that are in the message queue.

这个是我看API里面的一个方法。看解释应该是异常指定标识what对应的那个消息msg。。希望对你有帮助

如何抓取广播队列消息 android

下面和大家分享一下android中非常重要的消息处理机制,说到消息处理,Message,MessageQueue,Looper,Handler这四个类的作用是我们必须要明白的。 下面分别谈谈他们的作用: MessageQueue MessageQueue表示消息队列,存放消息的地方,按照“先进先..则执行,每一个线程只可以拥有一个MessageQueue。当创建Looper对象的时候会创建一个MessageQueue对象。

Message

Message表示消息对象,MessageQueue中存放的对象,一个MessageQueue中可以存放多个Message对象。通过调用Message类的obtain()方法或者调用Handler类的obtainMessage()方法获取Message对象,但是这样并不一定会创建一个新的Message对象,如果消息池中有可用的Message对象则直接取出返回这个对象,否则如果消息池中没有可用的Message对象,则会创建一个新的Message对象。当消息队列中的Message对象被系统处理完之后,该Message对象会从MessageQueue中删除,然后放入消息池中。

Looper

Looper是用来操作MessageQueue的,每一个Looper对应一个MessageQueue,可以通过调用Looper.myLooper()方法获取当前线程的Looper对象,Looper循环从MessageQueue中取出Message对象,交给Handler调用handleMessage方法进行处理,处理完之后Message对象被放入消息池中。

Handler

Handler是消息的处理者,Handler将需要传递的信息封装成Message对象,然后调用sendMessage方法将Message放入MessageQueue中,当MessageQueue循环到该Message时,调用相应Handler对象的handleMessage方法对其进行处理。

注意在UI线程也就是主线程中默认会创建Looper对象和MessageQueue对象,如果在我们自己新开的线程中要进行消息处理,必须创建Looper对象和MessageQueue对象,通过调用Looper.prepare()方法可以创建Looper对象和MessageQueue对象,调用Looper.loop()方法可以启动消息循环队列。

【Android开发】怎么在ListView中做一个图片批量上传的队列

先是两个layout:

1、main.xml

复制代码

复制代码

1 ?xml version="1.0" encoding="utf-8"?

2 LinearLayout xmlns:android=""

3 android:orientation="vertical"

4 android:layout_width="fill_parent"

5 android:layout_height="fill_parent"

6 ListView

7 android:layout_width="fill_parent"

8 android:layout_height="fill_parent"

9 android:focusable="false"

10 android:id="@+id/lvImageList"

11 /ListView

12 /LinearLayout

复制代码

复制代码

2、listitem.xml

复制代码

复制代码

1 ?xml version="1.0" encoding="utf-8"?

2 LinearLayout xmlns:android=""

3 android:orientation="horizontal"

4 android:layout_width="fill_parent"

5 android:layout_height="?android:attr/listPreferredItemHeight"

6 ImageView

7 android:id="@+id/itemImgImageInfo"

8 android:layout_marginTop="4dip"

9 android:layout_marginBottom="4dip"

10 android:layout_width="?android:attr/listPreferredItemHeight"

11 android:layout_height="?android:attr/listPreferredItemHeight"

12 /ImageView

13 TwoLineListItem xmlns:android=""

14 android:layout_width="fill_parent"

15 android:layout_height="fill_parent"

16 android:paddingLeft="4dip"

17 android:mode="twoLine"

18 CheckedTextView

19 android:id="@+id/itemChkImageInfo"

20 android:layout_width="fill_parent"

21 android:layout_height="wrap_content"

22 android:gravity="center_vertical"

23 android:textAppearance="?android:attr/textAppearanceSmall"

24 android:checkMark="?android:attr/listChoiceIndicatorMultiple"

25 /CheckedTextView

26 TextView

27 android:id="@+id/itemTxtImageInfo"

28 android:layout_width="fill_parent"

29 android:layout_height="wrap_content"

30 android:gravity="center_vertical|top"

31 android:layout_marginBottom="4dip"

32 android:layout_below="@+id/itemChkImageInfo"

33 android:textAppearance="?android:attr/textAppearanceSmall"

34 /TextView

35 /TwoLineListItem

36 /LinearLayout

复制代码

复制代码

接着是代码:

复制代码

复制代码

1 package com.android.MultipleChoiceImageList;

2

3 import java.util.ArrayList;

4 import java.util.HashMap;

5 import java.util.List;

6 import java.util.Map;

7

8 import android.app.Activity;

9 import android.content.Context;

10 import android.database.Cursor;

11 import android.graphics.Bitmap;

12 import android.net.Uri;

13 import android.os.Bundle;

14 import android.provider.MediaStore;

15 import android.provider.MediaStore.Images;

16 import android.view.LayoutInflater;

17 import android.view.View;

18 import android.view.ViewGroup;

19 import android.widget.AdapterView;

20 import android.widget.CheckedTextView;

21 import android.widget.ImageView;

22 import android.widget.ListView;

23 import android.widget.SimpleAdapter;

24 import android.widget.TextView;

25 import android.widget.AdapterView.OnItemClickListener;

26

27 public class MainActivity extends Activity {

28

29 private ListView lvImageList;

30

31 private String imageID= "imageID";

32 private String imageName = "imageName";

33 private String imageInfo = "imageInfo";

34

35 private ArrayListString fileNames = new ArrayListString();

36

37 private MultipleChoiceImageListAdapter mAdapter;

38

39 /** Called when the activity is first created. */

40 @Override

41 public void onCreate(Bundle savedInstanceState) {

42 super.onCreate(savedInstanceState);

43 setContentView(R.layout.main);

44

45 lvImageList=(ListView) this.findViewById(R.id.lvImageList);

46 lvImageList.setItemsCanFocus(false);

47 lvImageList.setOnItemClickListener(new OnItemClickListener() {

48 @Override

49 public void onItemClick(AdapterView? parent, View view, int position, long id) {

50

51 CheckedTextView checkedTextView = (CheckedTextView) view.findViewById(R.id.itemChkImageInfo);

52 checkedTextView.toggle();

53 mAdapter.setCheckItem(position, checkedTextView.isChecked());

54 }

55 });

56 try{

57 String[] from = {imageID, imageName, imageInfo};

58 int[] to = {R.id.itemImgImageInfo, R.id.itemChkImageInfo, R.id.itemTxtImageInfo};

59 mAdapter = new MultipleChoiceImageListAdapter(MainActivity.this, GetImageList(), R.layout.listitem, from, to);

60 lvImageList.setAdapter(mAdapter);

61 }

62 catch(Exception ex){

63 return;

64 }

65 }

66

67 //获取图片列表

68 private ArrayListMapString, String GetImageList(){

69

70 ArrayListMapString, String imageList = new ArrayListMapString,String();

71 HashMapString, String imageMap;

72

73 //读取SD卡中所有图片

74 Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;

75 String[] projection = { MediaStore.Images.Media._ID, MediaStore.Images.Media.DISPLAY_NAME,MediaStore.Images.Media.DATA, MediaStore.Images.Media.SIZE};

76 String selection = MediaStore.Images.Media.MIME_TYPE + "=?";

77 String[] selectionArg ={"image/jpeg"};

78 Cursor mCursor = this.managedQuery(uri, projection, selection, selectionArg, MediaStore.Images.Media.DISPLAY_NAME);

79 imageList.clear();

80 if (mCursor != null) {

81 mCursor.moveToFirst();

82 while (mCursor.getPosition() != mCursor.getCount())

83 {

84 imageMap= new HashMapString, String();

85 imageMap.put(imageID, mCursor.getString(mCursor.getColumnIndex(MediaStore.Images.Media._ID)));

86 imageMap.put(imageName, mCursor.getString(mCursor.getColumnIndex(MediaStore.Images.Media.DISPLAY_NAME)));

87 imageMap.put(imageInfo, " " + (mCursor.getLong(mCursor.getColumnIndex(MediaStore.Images.Media.SIZE))/1024)+"KB");

88 imageList.add(imageMap);

89 fileNames.add(mCursor.getString(mCursor.getColumnIndex(MediaStore.Images.Media.DATA)));

90 mCursor.moveToNext();

91 }

92 mCursor.close();

93 }

94 return imageList;

95 }

96

97 //可多选图片列表适配器

98 class MultipleChoiceImageListAdapter extends SimpleAdapter {

99

100 private MapInteger, Boolean map;

101 private ListInteger state;

102 private List? extends MapString, ? mList;

103

104 LayoutInflater mInflater;

105

106 public MultipleChoiceImageListAdapter(Context context, ListMapString, String data, int resource, String[] from, int[] to) {

107 super(context, data, resource, from, to);

108 map = new HashMapInteger, Boolean();

109 mInflater = LayoutInflater.from(context);

110 mList = data;

111 for(int i = 0; i data.size(); i++) {

112 map.put(i, false);

113 }

114 state = new ArrayListInteger();

115 }

116

117 @Override

118 public int getCount() {

119 return mList.size();

120 }

121

122 @Override

123 public Object getItem(int position) {

124 return position;

125 }

126

127 @Override

128 public long getItemId(int position) {

129 return position;

130 }

131

132 //设置条目选中状态

133 public void setCheckItem(int position, Boolean isChecked){

134 map.put(position, isChecked);

135 if (state.contains(position))

136 state.remove((Object)position);

137 if (isChecked){

138 state.add(position);

139 }

140 }

141

142 //获取列表中已选中条目

143 public long[] getCheckItemIds(){

144 int count = state.size();

145 long[] ids = new long[count];

146 for (int i = 0; i count; i++) {

147 ids[i]= (long)state.get(i);

148 }

149 return ids;

150 }

151

152 @Override

153 public View getView(int position, View convertView, ViewGroup parent) {

154 if(convertView == null) {

155 convertView = mInflater.inflate(R.layout.listitem, null);

156 }

157

158 CheckedTextView checkedTextView = (CheckedTextView) convertView.findViewById(R.id.itemChkImageInfo);

159 checkedTextView.setChecked(map.get(position));

160 checkedTextView.setText((String)mList.get(position).get(imageName));

161

162 TextView textView = (TextView) convertView.findViewById(R.id.itemTxtImageInfo);

163 textView.setText((String)mList.get(position).get(imageInfo));

164

165 //显示图片缩略图

166 ImageView image = (ImageView) convertView.findViewById(R.id.itemImgImageInfo);

167 Bitmap bm = MediaStore.Images.Thumbnails.getThumbnail(getContentResolver(), Long.parseLong((String)mList.get(position).get(imageID)), Images.Thumbnails.MICRO_KIND, null);

168 image.setImageBitmap(bm);

169

170 return convertView;

171 }

172 }

173 }


本文名称:android队列,android消息队列数据结构
转载注明:http://cdkjz.cn/article/dsohdss.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220