关于Thread和Handler的使用(一)

public class TestHandlerAty extends Activity {



private android.os.Handler mHandler = new Handler();

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Button btn_start = (Button) findViewById(R.id.btn_start);
        Button btn_stop = (Button) findViewById(R.id.btn_stop);
        btn_start.setOnClickListener(new View.OnClickListener() {



@Override

public void onClick(View v) {

mHandler.post(mThread); // 开始调用线程,执行run()方法,输出run...

}

});
        btn_stop.setOnClickListener(new View.OnClickListener() {



@Override

public void onClick(View v) {

mHandler.removeCallbacks(mThread); // 移除mThread,不再输出run...

}

});
    }

    private Thread mThread = new Thread(new Runnable(){


@Override

public void run() {

Log.d("test", "run...");

mHandler.postDelayed(mThread, 3000);// 3秒钟之后执行mThread,即run()方法,输出run...

}

    });

}

这是一个简单的测试例子,源码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是使用ThreadHandler和Message方式实现图片加载的示例代码: 1. 在布局文件中添加一个EditText用于获取图片的地址,一个Button用于启动连接http,以及一个ImageView用于显示图片。 ```xml <EditText android:id="@+id/et_image_url" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Enter image URL here"/> <Button android:id="@+id/btn_load_image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Load Image"/> <ImageView android:id="@+id/image_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:scaleType="centerCrop"/> ``` 2. 在Activity中获取EditText、Button和ImageView的实例,并设置Button的点击事件。 ```java EditText etImageUrl = findViewById(R.id.et_image_url); Button btnLoadImage = findViewById(R.id.btn_load_image); ImageView imageView = findViewById(R.id.image_view); btnLoadImage.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String imageUrl = etImageUrl.getText().toString(); new LoadImageThread(imageUrl, imageView).start(); } }); ``` 3. 创建一个LoadImageThread线程,用于下载图片并将其显示到ImageView上。 ```java private static class LoadImageThread extends Thread { private String imageUrl; private ImageView imageView; private Bitmap bitmap; public LoadImageThread(String imageUrl, ImageView imageView) { this.imageUrl = imageUrl; this.imageView = imageView; } @Override public void run() { try { URL url = new URL(imageUrl); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setDoInput(true); connection.connect(); InputStream input = connection.getInputStream(); bitmap = BitmapFactory.decodeStream(input); input.close(); } catch (IOException e) { e.printStackTrace(); } Message message = Message.obtain(); message.obj = bitmap; handler.sendMessage(message); } } private static Handler handler = new Handler(Looper.getMainLooper()) { @Override public void handleMessage(Message msg) { Bitmap bitmap = (Bitmap) msg.obj; imageView.setImageBitmap(bitmap); } }; ``` 在LoadImageThread中,我们使用HttpURLConnection打开图片的输入流,然后使用BitmapFactory将其解码为Bitmap对象,并将Bitmap对象通过Message发送给Handler。 在Handler中,我们接收到Message后,将图片设置到ImageView上。 这样,当用户输入图片的地址并点击Button时,就会自动下载图片并显示到ImageView上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值