想知道什么是最合适的线程,用于将图像从相机保存到SD卡以及使用成功/失败消息(吐司)更新UI等过程。 处理程序或异步线程? 异步线程也可以将Bitmap作为参数吗?
由于 Ciaran
答案 0 :(得分:2)
这样的事情应该这样做:
AsyncTask<Bitmap, Void, Boolean> task = new AsyncTask<Bitmap, Void, Boolean>() {
@Override
protected Boolean doInBackground(Bitmap... bitmaps) {
Boolean saved = writeToDisk(bitmaps[0]); //Your write code
return saved;
}
@Override
protected void onPostExecute(Boolean saved) {
if (saved) {
Toast.makeText(context, R.string.success, Toast.LENGTH_LONG).show();
//HANDLE SUCCESS
} else {
Toast.makeText(context, R.string.error, Toast.LENGTH_LONG).show();
//HANDLE ERROR
}
}
};
task.execute(bitmap);
答案 1 :(得分:1)
asynctask类非常适合您想要实现的目标,您可以将位图作为参数传递给asynctask。
答案 2 :(得分:1)
Android不允许在UI线程上使用网络(即处理按钮点击等事件)。此外,它不允许对该线程进行任何慢速操作,因为它们会停止整个GUI。
我不确定这是否适用于SD卡写入。这可能取决于您需要在那里写入的数据量。如果它是以兆字节或接近于兆字节的顺序,使用单独的线程写入SD卡毫无疑问是有意义的,因为写入过程可能持续足够长的时间。甚至可能更少。