人这一辈子总会犯错,而自己,这一次,却做了一个言而无信的人,答应的事情却没有做到.严重的反省吧,睡不着.

      凡事都是做人第一,做人是一辈子的学问

 

思前想后,学过的东西,不总结,也许很快就会忘掉了.

有些东西虽然简单,但是记到博客上来,希望大家看一看,一笑而过吧.

      当手机跟服务器进行数据交互的时候,我们不能把耗时的操作放在主线程中,要做的事情就是异步.

而要异步,我们也要在界面上反馈一个信息给用户,让用户知道应该等待数据下载....

      先看两张图,这就是最常用的异步弹出窗口了

 

 

 

上代码吧 都比较简单,只是发发博客,为以后写博客巩固基础

关于线程,看了比较多的建议...不管是线程也好还是其他什么都好,android是一个手机客户端,

      大家在写代码的同时还是非常有必要针对内存优化,代码健壮做一些相应上的代码优化的.

      比如 少用new的关键字,对象多复用..等等.我再这里就不叙述了,我个人也不是非常的强悍

package tree.love.UI.Demo.ProgressDialog.activity;
import tree.love.UI.Demo.ProgressDialog.R;
import .Activity;
import .ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
public class HomeActivity extends Activity implements OnClickListener
{
    private ProgressDialog loadingDialog = null;
    /** 第一种风格 **/
    private static final int LOADING_STYLE_01 = 1 ;
    /** 第二种风格 **/
    private static final int LOADING_STYLE_02 = 2 ;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        findViewById(.button).setOnClickListener(this);
        findViewById(.button1).setOnClickListener(this);
    }
    @Override
    public void onClick(View v)
    {
        switch (v.getId())
        {
            case .button://按钮1
                loadingDialog = PrintAlertUtil.showDialog(this, "正在下載...");
                Thread thread01 = new Thread(new Runnable() {
                    
                    @Override
                    public void run()
                    {
                        downLoad(5,false);
                    }
                });
                thread01.start();
                break;
            case .button1://按钮2
                loadingDialog = PrintAlertUtil.showDialog(this, "正在更新", 100);
                Thread thread02 = new Thread(new Runnable() {
                    
                    @Override
                    public void run()
                    {
                        downLoad(10,true);
                    }
                });
                thread02.start();
                break;
        }
    }
    private Handler mHandler = new Handler() {
        @Override
        public void handleMessage(Message msg)
        {
            super.handleMessage(msg);
            switch (msg.what)
            {
                case LOADING_STYLE_01:
                    //关闭对话框
                    PrintAlertUtil.dismissDialog(loadingDialog);
                    //提示
                    PrintAlertUtil.showToast(HomeActivity.this, msg.obj.toString());
                    break;
                    
                case LOADING_STYLE_02:
                    int p = msg.getData().getInt("percent");
                    if (p == 100)
                    {
                        //更新完成,关闭对话框
                        loadingDialog.setProgress(p);
                        PrintAlertUtil.dismissDialog(loadingDialog);
                        PrintAlertUtil.showToast(HomeActivity.this, msg.obj.toString());
                    }
                    else
                    {
                        //更新进度条
                        loadingDialog.setProgress(p);
                    }
                    break;
            }
        }
    };
    /**
     * 模擬下載操作
     */
    public void downLoad(int number,boolean download)
    {
        for (int i = 0; i < number; i++)
        {
            /** 每次模拟停顿耗时0.5秒 **/
            try{Thread.sleep(500);}catch (InterruptedException e){e.printStackTrace();}
            if (download)
            {
                /** 每循环一次更新一次进度 **/
                int percent = (i+1)*10;
                Message message = new Message();
                Bundle bundle = message.getData();
                bundle.putInt("percent", percent);
                message.setData(bundle);
                message.what = LOADING_STYLE_02;
                if (i == 9)
                {
                    message.obj="更新完毕";
                }
                mHandler.sendMessage(message);
            }
        }
        if (!download)
        {
            Message message = new Message();
            message.what = LOADING_STYLE_01;
            message.obj = "下载完成";
            mHandler.sendMessage(message);
        }
    }
}

还有另一个类的,打包是为了以后如果Activity多了 就不用老是在Activity中把ProgressDialog给new出来

没有写过多的注释,希望大家能看明白,如果真的不明白 就提问吧,我会就我本身懂的大家回复

package tree.love.UI.Demo.ProgressDialog.activity;
import .Activity;
import .ProgressDialog;
import android.widget.Toast;
public class PrintAlertUtil
{
    public static ProgressDialog showDialog(Activity context,String strContent)
    {
        if (context != null)
        {
            ProgressDialog infoDialog = new ProgressDialog(context);
            infoDialog.setMessage(strContent);
            infoDialog.show();
            return infoDialog;
        }
        return null;
    }
    public static ProgressDialog showDialog(Activity context,String strContent,int max)
    {
        if (context != null)
        {
            ProgressDialog dialog = new ProgressDialog(context);
            dialog.setMessage(strContent);
            //设置风格为条状
            dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
            //设置最大值
            dialog.setMax(max);
            //设置初始值
            dialog.setProgress(0);
            dialog.show();
            return dialog;
        }
        return null;
    }
    
    /**
     * @param infoDialog
     */
    public static void dismissDialog(ProgressDialog infoDialog)
    {
        if (infoDialog != null)
        {
            infoDialog.dismiss();
        }
        infoDialog = null;
    }
    
    public static void showToast(Activity ac ,String content)
    {
        Toast.makeText(ac, content, Toast.LENGTH_SHORT).show();
    }
}

 

源码我会上传..大家跑一跑就可以直接拿去用了