我有一个奇怪的问题 - 它发生在 xperia(android 4.0.3)上,但不在三星 S plus(2.3.6)上。在应用程序中,我正在使用带有支持库的谷歌地图 APIv2(在另一个活动中。不确定是否重要)。
我想我已经将问题缩小到:
private Bitmap bitmap;
private String st;
private static final String PHOTO_DIR = "photodir";
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
[...]
st = Environment.getExternalStorageDirectory().toString() + "/" + PHOTO_DIR + "/test.jpg";
bitmap = BitmapFactory.decodeFile(st);
ImageView im = (ImageView) findViewById(R.id.imv_Photo);
im.setImageBitmap(bitmap);
[...]
这按预期工作。但是这个:
@Override
public void onClick(View v)
{
try
{
ImageView im = (ImageView) findViewById(R.id.imv_Photo);
String st = Environment.getExternalStorageDirectory().toString() + "/" + PHOTO_DIR + "/test1.jpg";
Bitmap bitmap = BitmapFactory.decodeFile(st);
im.setImageBitmap(bitmap);
}
catch (Exception e)
{
// null
}
}
即使删除了 im.setImageBitmap(bitmap) 也会挂起应用程序(尽管有 try/catch 块!)。当我注释掉 BitmapFactory.decodeFile 问题消失。更糟糕的是,插入 USB 时 xperia 会卸载 sd 卡,我还不知道如何将图片写入手机内存,所以我无法检查日志(顺便说一句:以后有办法获取日志吗?)
当我从 onCreate() 中删除代码时,onClick() 只工作一次。我尝试在解码之前设置 bitmap = null 和 setImageBitmap(null),但它没有帮助。
这对我来说似乎很奇怪,因为三星对相同的代码没有问题。
有什么解决方案,或者我做错了什么?