当前位置:  编程技术>移动开发
本页文章导读:
    ▪AsyncTask的运用        AsyncTask的使用   AsyncTask的使用 class  DownloadImagesTask  extends  AsyncTask<String, Integer, Bitmap> {          private   int  imageViewID;               protected   void  onPostExecute.........
    ▪ Java内存储器管理SoftReference 和 WeakReference        Java内存管理SoftReference 和 WeakReference 今天在看工程源码的时候看到了SoftReference这个类。 用来缓存我们软件的一些图片,好奇。就看了看这个类的作用。   首先这篇文章要讲的是两个内存管.........
    ▪ RelativeLayout用代码兑现布局       RelativeLayout用代码实现布局 TextView txt1 = new TextView(this);      RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,      LayoutParams.WRAP_CONTENT);      params.addRule(RelativeLa.........

[1]AsyncTask的运用
    来源: 互联网  发布时间: 2014-02-18
AsyncTask的使用

 

AsyncTask的使用
  • class  DownloadImagesTask  extends  AsyncTask<String, Integer, Bitmap> {    
  •     
  • private   int  imageViewID;    
  •     
  •      protected   void  onPostExecute(Bitmap bitmap1) {    
  •     setImage(imageViewID, bitmap1);    
  • }    
  •     
  •      public   void  setImageId( int  imageViewID) {    
  •          this .imageViewID = imageViewID;    
  •     }    
  •     
  •      @Override     
  •      protected  Bitmap doInBackground(String... url) {    
  •         Bitmap bitmap1 =     
  •             DownloadImage(url[ 0 ]);    
  •          return  bitmap1;    
  •     }   
  • /* 39.        @Override 
  • 40.        protected void onCancelled() {  
    41.            super.onCancelled();  
    42.        }  
    43.        @Override 
    44.        protected void onPostExecute(String result) {  
    45.            // 返回HTML页面的内容  
    46.            message.setText(result);  
    47.        }  
    48.        @Override 
    49.        protected void onPreExecute() {  
    50.            // 任务启动,可以在这里显示一个对话框,这里简单处理  
    51.            message.setText(R.string.task_started);  
    52.        }  
    53.        @Override 
    54.        protected void onProgressUpdate(Integer... values) {  
    55.            // 更新进度  
    56.            message.setText(values[0]);  
    57.        }  
    */
  • }   //有很多的方法可以用
  •  

    Java代码  
  • DownloadImagesTask task1 =  new  DownloadImagesTask();    
  • task1.setImageId(R.id.img1);    
  • task1.execute( "http://assets.devx.com/articlefigs/39810_1.jpg" );   
  •  

    Java代码  
  • private  Bitmap DownloadImage(String URL)   
  •    {           
  •        Bitmap bitmap =  null ;   
  •        InputStream in =  null ;           
  •         try  {   
  •            in = OpenHttpConnection(URL);   
  •            bitmap = BitmapFactory.decodeStream(in);   
  •            in.close();   
  •        }  catch  (IOException e1) {   
  •             // TODO Auto-generated catch block   
  •            e1.printStackTrace();   
  •        }   
  •         return  bitmap;                   
  •    }  
  •  在其中使用进度对话框

     

    Java代码  
  • class  GetTask  extends  AsyncTask<Object, Void, String>    
  •     {    
  •         Context mContext;    
  •             ProgressDialog mDialog =  null ;    
  •     
  •             GetPhotoFeedTask(Context context)    
  •     {    
  •         mContext = context;    
  •     }    
  •     
  •          @Override     
  •          protected   void  onPreExecute()    
  •         {    
  •              super .onPreExecute();    
  •     
  •              mDialog =  new  ProgressDialog(mContext);    
  •              mDialog.setMessage( "Please wait..." );    
  •              mDialog.show();    
  •         }    
  •                  @Override     
  •          protected  String doInBackground(Object... params)    
  •         {    
  •                    // do stuff in background : fetch response    
  •                 }    
  •     
  •                  @Override     
  •          protected   void  onPostExecute(String result)    
  •         {    
  •              super .onPostExecute(result);    
  •             setProgressBarIndeterminateVisibility( false );    
  •              // mDialog.dismiss();    
  •                 }    
  • }  

  •     
    [2] Java内存储器管理SoftReference 和 WeakReference
        来源: 互联网  发布时间: 2014-02-18
    Java内存管理SoftReference 和 WeakReference

    今天在看工程源码的时候看到了SoftReference这个类。

    用来缓存我们软件的一些图片,好奇。就看了看这个类的作用。

     

    首先这篇文章要讲的是两个内存管理相关的类WeakReference和SoftReference。

     

    首相SoftReference的用处是增强一个引用常驻在内存的能力。也就是说一个引用比如A a=new A();

    此时如果你把a=null;那么在不久之后的某个时间点,java虚拟机的内存回收机制就会把这个引用所占用的内存释放掉。

     

    如果有时候,我们想让一个引用常驻内存而不是被回收,则可以用到softreference,比如上文的a引用。

    用:SoftReference sr=new SoftReference(a);

     

    这段代码就可以让a引用常驻内存,不会被回收。那可能就有疑问了,如果空引用也不回收那么内存很容易就溢出了。但是softreference可以保证 在抛出OutOfMemory异常之前会让虚拟机回收那些已经为空的引用,防止异常的发生。这就是softreference大概的用处。

     

    概括起来就是:用于实现一些常用资源的缓存,实现Cache的功能,保证最大限度的使用内存而不引起OutOfMemory异常。

     

    weakReference一般用来防止内存泄漏,要保证内存被VM回收 

     

    WeakReference,暂时我所了解的用处是当你想知道被设置为空的引用什么时候被回收时可以用到WeakReference。在代码上与SoftReference的用法是一样的。下面试一段简单的Demo代码

     

     

    import java.lang.ref.SoftReference;
    import java.lang.ref.WeakReference;
    
    public class Test {
    	
    	public static void main(String[] args) throws InterruptedException
    	{
    		A a=new A();
    		a.test();
    		
    		WeakReference wr=new WeakReference(a);
    		//SoftReference sr=new SoftReference(a);
    		a=null;
    		while(true)
    		{
    		if(sr.get()!=null)
    		{
    			System.out.println("还没有被清楚");
    		}else
    		{
    			System.out.println("已经被清除了");
    			break;
    		}
    		
    	}
    	}
    }
    
    
    class A{
    	public void test()
    	{
    		System.out.println(&quot;I am A&quot;);
    	}
    }

        
    [3] RelativeLayout用代码兑现布局
        来源: 互联网  发布时间: 2014-02-18
    RelativeLayout用代码实现布局
    TextView txt1 = new TextView(this); 
        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, 
        LayoutParams.WRAP_CONTENT); 
        params.addRule(RelativeLayout.ALIGN_PARENT_LEFT); 

        params.addRule(RelativeLayout.LEFT_OF, 1001); 
        txt1.setLayoutParams(params);

        TextView txt2 = new TextView(this); 
        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams. WRAP_CONTENT, 
        LayoutParams.WRAP_CONTENT); 
        params2.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
        txt2.setLayoutParams(params2); 
        txt2.setText("obj");
        txt2.setId(1001); 
       
        RelativeLayout layout1 = new RelativeLayout(this); 
        layout1.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); 
        layout1.addView(txt1); 
        layout1.addView(txt2); 
        setContentView(layout1);



    对应的XML:
    <RelativeLayout 
        xmlns:android="http://schemas.android.com/apk/res/android" 
        android:layout_height="fill_parent" 
        android:layout_width="fill_parent"> 
        <TextView 
            android:id="@+id/leftobj" 
            android:hint="left of the base" 
            android:layout_alignParentLeft="true" 
            android:layout_width="fill_parent" 
            android:layout_toLeftOf="@+id/base" 
            android:layout_height="wrap_content"></TextView> 
        <TextView
            android:id="@+id/base"
            android:text="obj" 
            android:layout_width="wrap_content" 
            android:layout_alignParentRight="true" 
            android:layout_height="wrap_content"></TextView> 
    </RelativeLayout>

        
    最新技术文章:
    ▪Android开发之登录验证实例教程
    ▪Android开发之注册登录方法示例
    ▪Android获取手机SIM卡运营商信息的方法
    ▪Android实现将已发送的短信写入短信数据库的...
    ▪Android发送短信功能代码
    ▪Android根据电话号码获得联系人头像实例代码
    ▪Android中GPS定位的用法实例
    ▪Android实现退出时关闭所有Activity的方法
    ▪Android实现文件的分割和组装
    ▪Android录音应用实例教程
    ▪Android双击返回键退出程序的实现方法
    ▪Android实现侦听电池状态显示、电量及充电动...
    ▪Android获取当前已连接的wifi信号强度的方法
    ▪Android实现动态显示或隐藏密码输入框的内容
    ▪根据USER-AGENT判断手机类型并跳转到相应的app...
    ▪Android Touch事件分发过程详解
    ▪Android中实现为TextView添加多个可点击的文本
    ▪Android程序设计之AIDL实例详解
    ▪Android显式启动与隐式启动Activity的区别介绍
    ▪Android按钮单击事件的四种常用写法总结
    ▪Android消息处理机制Looper和Handler详解
    ▪Android实现Back功能代码片段总结
    ▪Android实用的代码片段 常用代码总结
    ▪Android实现弹出键盘的方法
    ▪Android中通过view方式获取当前Activity的屏幕截...
    ▪Android提高之自定义Menu(TabMenu)实现方法
    ▪Android提高之多方向抽屉实现方法
    ▪Android提高之MediaPlayer播放网络音频的实现方法...
    ▪Android提高之MediaPlayer播放网络视频的实现方法...
    ▪Android提高之手游转电视游戏的模拟操控
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3