您的位置:首页 > 移动开发 > Android开发

Android开发中,使用线程应该注意的问题!

2012-04-01 15:01 731 查看
原帖地址:http://blog.csdn.net/Android_Tutor/archive/2010/08/24/5834246.aspx

我们都知道Hanlder是线程与Activity通信的桥梁,我们在开发好多应用中会用到线程,有些人处理不当,会导致当程序结束时,线程并没有被销毁,而是一直在后台运行着,当我们重新启动应用时,又会重新启动一个线程,周而复始,你启动应用次数越多,开启的线程数就越多,你的机器就会变得越慢。

为了方便 大家理解,我写一个简单的Demo.功能就是每2秒中将应用的Title更换一次。具体步骤如下:

第一步:新建一个Android工程命名为ThreadDemo。

第二步:修改ThreadDemo.java,代码如下:

[c-sharp]
view plaincopyprint?

package com.tutor.thread;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
public class ThreadDemo extends Activity {

private static final String TAG =
"ThreadDemo";
private int count = 0;

private Handler mHandler =
new Handler();

private Runnable mRunnable =
new Runnable() {

public void run() {

//为了方便 查看,我们用Log打印出来

Log.e(TAG, Thread.currentThread().getName() +
" " +count);
count++;
setTitle("" +count);

//每2秒执行一次
mHandler.postDelayed(mRunnable, 2000);

}

};
@Override
public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//通过Handler启动线程

mHandler.post(mRunnable);
}

}

[c-sharp]
view plaincopyprint?

@Override
protected void onDestroy() {

mHandler.removeCallbacks(mRunnable);
super.onDestroy();
}

@Override
protected void onDestroy() {
mHandler.removeCallbacks(mRunnable);
super.onDestroy();
}


所以ThreadDemo.java的完整代码如下:

[c-sharp]
view plaincopyprint?

package com.tutor.thread;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
public class ThreadDemo extends Activity {

private static final String TAG =
"ThreadDemo";
private int count = 0;

private Handler mHandler =
new Handler();

private Runnable mRunnable =
new Runnable() {

public void run() {

//为了方便 查看,我们用Log打印出来

Log.e(TAG, Thread.currentThread().getName() +
" " +count);
count++;
setTitle("" +count);

//每2秒执行一次
mHandler.postDelayed(mRunnable, 2000);

}

};
@Override
public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//通过Handler启动线程

mHandler.post(mRunnable);
}

@Override
protected void onDestroy() {

//将线程销毁掉

mHandler.removeCallbacks(mRunnable);
super.onDestroy();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐