LISTVIEW NOTIFY

本文介绍了一个名为ListViewStressTest的性能测试类,该类继承自ListActivity,主要用于模拟ListView在不同操作下(如更新、删除和滚动)的表现。通过随机数生成器模拟大量数据的增删改查及滚动操作,可用于评估Android应用中ListView组件的性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public class ListViewStressTest extends ListActivity {
ArrayAdapter<String> adapter;
ListView list;
AsyncTask<Void, String, Void> task;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

this.adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);
this.list = this.getListView();

this.list.setAdapter(this.adapter);

this.task = new AsyncTask<Void, String, Void>() {
Random r = new Random();
int[] delete;
volatile boolean scroll = false;

@Override
protected void onProgressUpdate(String... values) {
if(scroll) {
scroll
= false; doScroll();
return;
}

if(values == null) {
doDelete
();
return;
}

doUpdate
(values);

if(ListViewStressTest.this.adapter.getCount() > 5000) {
ListViewStressTest.this.adapter.clear();
}
}

private void doScroll() {
if(ListViewStressTest.this.adapter.getCount() == 0) {
return;
}

int n = r.nextInt(ListViewStressTest.this.adapter.getCount());
ListViewStressTest.this.list.setSelection(n);
}

private void doDelete() {
int[] d;
synchronized(this) {
d
= this.delete;
}
if(d == null) {
return;
}
for(int i = 0 ; i < d.length ; i++) {
int index = d[i];
if(index >= 0 && index < ListViewStressTest.this.adapter.getCount()) {
ListViewStressTest.this.adapter.remove(ListViewStressTest.this.adapter.getItem(index));
}
}
}

private void doUpdate(String... values) {
for(int i = 0 ; i < values.length ; i++) {
ListViewStressTest.this.adapter.add(values[i]);
}
}

private void updateList() {
int number = r.nextInt(30) + 1;
String[] strings = new String[number];

for(int i = 0 ; i < number ; i++) {
strings
[i] = Long.toString(r.nextLong());
}

this.publishProgress(strings);
}

private void deleteFromList() {
int number = r.nextInt(20) + 1;
int[] toDelete = new int[number];

for(int i = 0 ; i < number ; i++) {
int num = ListViewStressTest.this.adapter.getCount();
if(num < 2) {
break;
}
toDelete
[i] = r.nextInt(num);
}

synchronized(this) {
this.delete = toDelete;
}

this.publishProgress(null);
}

private void scrollSomewhere() {
this.scroll = true;
this.publishProgress(null);
}

@Override
protected Void doInBackground(Void... params) {
while(true) {
int what = r.nextInt(3);

switch(what) {
case 0:
updateList
();
break;
case 1:
deleteFromList
();
break;
case 2: scrollSomewhere();
break;
}

try {
Thread.sleep(0);
} catch(InterruptedException e) {
// TODO Auto-generated catch block
e
.printStackTrace();
}
}
}

};

this.task.execute(null);
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值