android实现异步的问题小经验总结

1、如下图所言,必须在UI线程中调用异步任务的子类

2、经过碰壁 测试

1--、方法一中
 @Override
            public void onClick(DialogInterface dialog, int which)
            {Thread thread=new Thread(new Runnable() {
                @Override
                public void run()
                {

                    uploaddd();

                }
            });
               thread.start();
2--、方法二中
  private void uploaddd()
    {
        final Handler handler=new Handler()
        {
            public void handleMessage(Message msg)
            {
                if(msg.what==1)
                {
                    Log.d("DFDFDFDF",ii+"__"+"haode");              

                }
            }
        };
        Thread thread =new Thread(new Runnable()
        {
            @Override
            public void run()
            {
                Log.d("DFDFDFDF",ii+"__");
                handler.sendEmptyMessage(1);
            }
        });
        thread.start();
    }

上述代码会挂掉 证明得出 在非UI中 调用的方法继续开启线程同时有Handler机制会出现异常(因为Handler是异步机制)

实验得出下述代码不会出现异常

1--
 @Override
            public void onClick(DialogInterface dialog, int which)
            {Thread thread=new Thread(new Runnable() {
                @Override
                public void run()
                {

                    uploaddd();

                }
            });
               thread.start();

2--
 private void uploaddd()
    {
//        final Handler handler=new Handler()
//        {
//            public void handleMessage(Message msg)
//            {
//                if(msg.what==1)
//                {
//                    Log.d("DFDFDFDF",ii+"__"+"haode");
////                    if(AndroidClient._error_uploadScrapImgFile.intern()!="")
////                    {
////                        Toast.makeText(ActivityScrap.this,AndroidClient._error_uploadScrapImgFile,Toast.LENGTH_SHORT).show();
////                    }
//                }
//            }
//        };
        Thread thread =new Thread(new Runnable()
        {
            @Override
            public void run()
            {
                Log.d("DFDFDFDF",ii+"__");
                AndroidClient.uploadScrapImgFile(scrapImgDatas,ii+"__");
                //handler.sendEmptyMessage(1);
            }
        });
        thread.start();
    }
时间: 2024-11-10 13:57:19

android实现异步的问题小经验总结的相关文章

Android小经验

转载自:http://mp.weixin.qq.com/s?__biz=MzA4MjU5NTY0NA==&mid=404388098&idx=1&sn=8bbbba7692dca68cdda2212dec4d86c0&scene=21#wechat_redirect 今天是冯建同学投稿.总结他在Android开发方面的各种小经验,我认为很有意义,所谓经验丰富有时候是指积累的这些小经验许多,他这篇分享相信会帮助到一些朋友.我也曾推荐过他的 APK魔鬼瘦身 一文.没看过的朋友也

Android开发的16条小经验总结

Android开发的16条小经验总结,希望对各位搞Android开发的朋友有所帮助. 1. TextView中的getTextSize返回值是以像素(px)为单位的, 而setTextSize()是以sp为单位的. 所以如果直接用返回的值来设置会出错,解决办法是用setTextSize()的另外一种形式,可以指定单位: setTextSize(int unit, int size)    TypedValue.COMPLEX_UNIT_PX : Pixels    TypedValue.COMP

提高工作效率的16条Android开发小经验

笔者在经历了多个Android开发项目之后,个人积累也从别处学习了很多在Android开发中非常实用的小经验.下面从中选择了最实用的16条,分享给大家. 1.TextView中的getTextSize返回值是以像素(px)为单位的,而setTextSize()是以sp为单位的.所以如果直接用返回的值来设置会出错,解决办法是用setTextSize()的另外一种形式,可以指定单位: 1 2 3 4 <span style="font-size:16px;">setTextSi

你应该知道的那些Android小经验

原文出处:http://jayfeng.com/ 做Android久了,就会踩很多坑,被坑的多了就有经验了,闲暇之余整理了部分,现挑选一些重要或者偏门的“小”经验做个记录. 查看SQLite日志 adb shell setprop log.tag.SQLiteLog V adb shell setprop log.tag.SQLiteStatements V 因为实现里用了Log.isLoggable(TAG, Log.VERBOSE)做了判断,LessCode的LogLess中也参考了这种机制

Android开发中15条小经验

Android开发中15条小经验 1. TextView中的getTextSize返回值是以像素(px)为单位的,而setTextSize()是以sp为单位的. 所以如果直接用返回的值来设置会出错,解决办法是用setTextSize()的另外一种形式,可以指定单位: setTextSize(intunit,intsize) TypedValue.COMPLEX_UNIT_PX:Pixels TypedValue.COMPLEX_UNIT_SP:ScaledPixels TypedValue.CO

关于achartengine的使用一些小经验

最近项目上要使用图表,便开始在网上找各种图表架包,好看的都是收费的,最后还是决定用google的achartengine.achartengine使用起来还算好,就是修改样式很烦.下面就分享下开发经验吧.所有的chart都分两块,一块是Renderer(如XYMultipleSeriesRenderer,我的理解是,这个renderer为视图render的模板,就是你想用什么图标,一个图图表基本分2层,这个是最下面一层),一块是Dataset(如XYMultipleSeriesDataset,用

Android开发60条技术经验总结

Android开发60条技术经验总结,以下是全文: 1. 全部Activity可继承自BaseActivity,便于统一风格与处理公共事件,构建对话框统一构建器的建立,万一需要整体变动,一处修改到处有效. 2. 数据库表段字段常量和SQL逻辑分离,更清晰,建议使用Lite系列框架 LiteOrm 库,超级清晰且重心可以放在业务上不用关心数据库细节. 3. 全局变量放全局类中,模块私有放自己的管理类中,让常量清晰且集中. 4. 不要相信庞大的管理类的东西会带来什么好处,可能是一场灾难,而要时刻注意

Android 开发60条技术经验总结(转)

Android 开发60条技术经验总结: 1. 全部Activity可继承自BaseActivity,便于统一风格与处理公共事件,构建对话框统一构建器的建立,万一需要整体变动,一处修改到处有效. 2. 数据库表段字段常量和SQL逻辑分离,更清晰,建议使用Lite系列框架 LiteOrm 库,超级清晰且重心可以放在业务上不用关心数据库细节. 3. 全局变量放全局类中,模块私有放自己的管理类中,让常量清晰且集中. 4. 不要相信庞大的管理类的东西会带来什么好处,可能是一场灾难,而要时刻注意单一职责原

跟Android初学者分享几点经验

刚学Android开发的人肯定想知道过来人是怎样入门的,有哪些经验,怎样能少走弯路.本文就跟大家分享一位Android开发者的入门经验,写的条理很清晰,真正讲出了自己的学习过程,尽管每个人的学习方法和习惯等不同,但也可以从中学到东西. 下面就是他的学习方法分享: 一.看Android开发视频:我刚开始接触android的时候,主要是跟着网上Android开发视频入的门,自己跟着一点一点的敲代码,就这样算是简单的入门,现在在电驴上面有很多的视频资源,记得很多前辈说过类似的话:学技术,有Google