当前位置:首页 > 嵌入式 > 嵌入式软件
[导读] 如果运行时,可以看到滚动条由条慢慢变短,则说明程序成功了。截图如下,建议选择大点的文件做测试。2. [图片] 2.jpg3. [代码]main.xml布局文件 0

 如果运行时,可以看到滚动条由条慢慢变短,则说明程序成功了。截图如下,建议选择大点的文件做测试。

2. [图片] 2.jpg

3. [代码]main.xml布局文件

01 <?xml version="1.0" encoding="utf-8"?>
02 <ScrollView
03 xmlns:Android="http://schemas.android.com/apk/res/android"
04 Android:layout_height="wrap_content" android:id="@+id/scrollView1"android:layout_width="fill_parent">
05     <LinearLayout Android:id="@+id/linearLayout1"
06     Android:orientation="vertical"   
07     Android:layout_width="fill_parent"
08     Android:layout_height="wrap_content">
09 <TextView 
10 Android:id="@+id/tv"
11     Android:layout_width="fill_parent"
12     Android:layout_height="wrap_content"   
13     />
14     </LinearLayout>
15 </ScrollView>

4. [代码]FileRead.java

01 public class FileRead {
02 boolean readend=false;
03 List<String> al=null;
04 public  class ReadNodesThread extends Thread{//读取线程
05  
06 public void run()
07 {
08 al=new ArrayList<String>(100);
09 al.clear();
10 readend=false;
11 int i=0;
12 try {
13 RandomAccessFile raf=new RandomAccessFile("/sdcard/test.txt","r");
14 //try {
15 while(raf.getFilePointer()<raf.length())
16 {
17 al.add(raf.readLine());
18 //sleep(100);//如果测试文件太小,这里休眠是为了测试,
19 }
20  
21 catch (Exception e1) {
22 // TODO Auto-generated catch block
23 e1.printStackTrace();
24 }
25 readend=true;
26 }
27 };
28 }

5. [代码]MultiThreadActivity.java

01 public class MultiThreadActivity extends Activity {
02 FileRead fr=null;
03 Handler mHandler=null;
04 int curi=0;
05 Runnable updateui=null;
06 String[] tmp=null;
07 String s="";
08 TextView tv=null;
09 class ReadListener extends Thread{//监听线程,当数据更新数目大于10条时,更新UI
10  
11 public void run()
12 {
13 int i=0,newi=0;
14 while(!fr.readend)
15 {
16 newi=fr.al.size();
17 if((newi-i)>10)//新增数据大于10条,更新UI
18 {
19 i=newi;
20 tmp=(String[])fr.al.toArray(new String[fr.al.size()]);
21 mHandler.post(updateui);
22 try {
23 Thread.sleep(100);
24 catch (InterruptedException e) {
25 // TODO Auto-generated catch block
26 e.printStackTrace();
27 }
28 }
29 }
30 //数据读完了
31 tmp=(String[])fr.al.toArray(new String[fr.al.size()]);
32 mHandler.post(updateui);
33 try {
34 Thread.sleep(100);
35 catch (InterruptedException e) {
36 // TODO Auto-generated catch block
37 e.printStackTrace();
38 }
39 }
40 };
41 @Override
42 public void onCreate(Bundle savedInstanceState) {
43 super.onCreate(savedInstanceState);
44 setContentView(R.layout.main);
45 tv=(TextView)findViewById(R.id.tv);
46 fr=new FileRead();
47 ReadNodesThread readThread=fr.new ReadNodesThread();
48 updateui=new Runnable()//更新UI的线程
49 {
50 @Override
51 public void run() {
52 // TODO Auto-generated method stub
53  
54 int i=0;
55  
56 for(i=curi;i<tmp.length;i++)
57 {
58 s+=tmp[i]+"n";
59 }
60 tv.setText(s);
61 curi=i;
62 }};
63 readThread.start();
64 ReadListener updateThread=new ReadListener();
65 mHandler=new Handler();
66 updateThread.start();
67 }
68 }
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭