当前位置: 编程技术>移动开发
本页文章导读:
▪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的使用
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
} //有很多的方法可以用
DownloadImagesTask task1 =
new
DownloadImagesTask();
task1.setImageId(R.id.img1);
task1.execute(
"http://assets.devx.com/articlefigs/39810_1.jpg"
);
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;
}
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();
}
}
AsyncTask的使用
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. }
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代码
Java代码
在其中使用进度对话框
Java代码
[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("I am A"); } }
[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>
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>
最新技术文章: