我正在开发一个Android应用程序,这是我面临的一个问题:
我的主菜单会将图像uri的意图传递给另一个活动,在该活动中它将在第二个活动上显示图像。
我处理获取uri的意图并将其转换为onStart()方法中的位图(我将自己编码为覆盖超类方法)。 (这样做是否正确?)
我应该在哪里将图片设置到活动的图片视图上?
我的问题是在处理完图像后,我的应用程序将被强制关闭。但如果我删除onStart()方法,第二个活动将没有错误,但将没有图像显示(因为我处理显示图像)。
当我使用Log.d()方法显示我的程序停止的位置时,它确实显示程序运行直到我处理意图并获得位图(我的程序此刻结束)。
这是我的onStrat()方法的代码:
protected void onStart()
{
Bitmap newBitmap = null;
Intent imageURI = getIntent();
Log.d("HERE", "intent received");
String imageLoc = imageURI.getExtras().getString("IMAGE_URI");
Log.d("HERE", imageLoc);
Uri imageLocation = Uri.parse(imageLoc);
Log.d("HERE", "Uri reated");
try
{
newBitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageLocation);
}
catch (FileNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Log.d("HERE", "bitmap created");
}
我弄乱了一些东西,最后找到了解决方案。感谢异步任务信息,它确实加快了我的过程。
谢谢。
答案 0 :(得分:0)
处理意图并获取uri并在onResume()中显示图像,它将适合您。
答案 1 :(得分:0)
我处理获取uri的意图并将其转换为位图 onStart()方法(我将自己编码为覆盖超类 方法)。 (这样做是否正确?)
创建Activity
时,应将任何CPU密集型操作放在单独的线程中。最常见的方法是使用AsyncTask
来处理位图。在从onCreate()
获取额外信息后,您应该以{{1}}方式开始执行。
我应该在哪里将图像设置到活动的图像视图上?
IMO,这是最好的选择 - Intent
<{1}}