当前位置:编程学习 > wap >>

安卓学习体会4:线程中发消息给主线程表示已完成

import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.*;
import android.os.*;

ublic class MainActivity extends Activity {

Button    button1;
    Handler   handler;
    TextView  textView1;
    boolean   isSuccess; 

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

textView1=(TextView)findViewById(R.id.textView1);
        handler=new Handler()
        {    
           @Override        
           public void handleMessage(Message msg)  
             {
            setTitle(isSuccess?"已成功下载":"下载失败");
            Toast.makeText(MainActivity.this, isSuccess?"已成功下载":"下载失败",8000).show();
            super.handleMessage(msg);
             } 
        };
button1=(Button)findViewById(R.id.button1);
button1.setOnClickListener(new OnClickListener() 
   {
   @Override 
     public void onClick(View v)
         {
        new Thread(new Runnable()
           {
             @Override 
                public void run()
                 {

                   try
                    {
                       //---线程中执行代码------------------
                       isSuccess=true;
                    }
                   catch(Exception e)
                   {
                    isSuccess=false;
                   }
                    Message m=handler.obtainMessage();
                    handler.sendMessage(m);
                    isSuccess=false;
                 }
          }).start();
        }
   });  //new OnClickListener
}
线程 消息 --------------------编程问答-------------------- 教程? 感觉


button1.setOnClickListener(new OnClickListener() 
   {
   @Override 
     public void onClick(View v)
         {
        new Thread(new Runnable()
           {
             @Override 
                public void run()
                 {

                   try
                    {
                       //---线程中执行代码------------------
                       isSuccess=true;
                    }
                   catch(Exception e)
                   {
                    isSuccess=false;
                   }
                    Message m=handler.obtainMessage();
                    handler.sendMessage(m);
                    isSuccess=false;
                 }
          }).start();
        }
   });  //new OnClickListener
--------------------编程问答-------------------- package com.proj.mytest;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.widget.*;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.MotionEvent;
import android.view.View.OnTouchListener;

import java.net.URL;
import java.io.*;
import android.graphics.Bitmap; 
import android.os.*;

public class MainActivity extends Activity {

ImageView  imageView1;
TextView textView1;
    Button button1;
    RelativeLayout layout;
    static int count=0;
    //----------------
    boolean flag;
    Handler  handler;
    
    void copyfile(InputStream f1,OutputStream f2)
    {   // 流复制
      byte[] buf=new byte[1024];
      int size=0;
      try
      {
          while ((size=f1.read(buf))>0)
             f2.write(buf,0,size);
          f1.close();f2.close();
      }
      catch(Exception e)
      {
      }
    }  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setTitle("多线程下载试验");
        setContentView(R.layout.activity_main);
        
        handler=new Handler()
        {
         @Override
         public void handleMessage(Message msg)   // 收到消息
            {
             Toast.makeText(MainActivity.this, flag?"文件下载完成":"文件下载失败", 
             8000).show();  
             setTitle("完成!");
                super.handleMessage(msg);
            }
        };  
        
        button1=(Button)findViewById(R.id.button1);
        button1.setOnClickListener(new OnClickListener()
        { 
           public void onClick(View v)
           {  
               new Thread(new Runnable()
               {
              @Override
              public void run()
               {
               String http="http://p1.qhimg.com/t01bb524e6934bce208.jpg";
                InputStream inS;               // 下载这幅图
                   FileOutputStream outS; 
                   
               try
                   {
                  outS=new FileOutputStream("/sdcard/pic.jpg");  
                  URL url=new URL(http);
                  inS= url.openStream();
                    copyfile(inS,outS);
                     outS.close();
                     flag=true;
                   }
                catch(Exception e)
                {
               flag=false;  
                }
                   Message m=handler.obtainMessage();
                   handler.sendMessage(m);   //  发消息 
              }  //public
             }).start();
           }  //public
        }); // new On
        
    }
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }   
} --------------------编程问答-------------------- 工程中要有  WRITE_EXTERNAL_STOREAGE权限
        和  INTERNET 权限
此线程中下载程序已完全通过!   --------------------编程问答-------------------- 学习学习了,多谢 --------------------编程问答-------------------- 看清楚了,楼主真是个好人
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,