Android 为什么我无法将位图添加到位图阵列列表
为什么我无法在asynktask内的位图数组列表中添加位图Android 为什么我无法将位图添加到位图阵列列表,android,arraylist,bitmap,Android,Arraylist,Bitmap,为什么我无法在asynktask内的位图数组列表中添加位图 public static class YourMoves_Players extends AsyncTask<String, String, String> { // static String yourmove_players[]; @Override protected String doInBackground(String... args) { boolean failure
public static class YourMoves_Players extends AsyncTask<String, String, String> {
// static String yourmove_players[];
@Override
protected String doInBackground(String... args) {
boolean failure = false;
// TODO Auto-generated method stub
// Check for success tag
int success;
Log.d("login.on create","YOURMOVE_PLAYERS Background");
try {
// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("playerid", fb_id));//player_id
Log.d("request!", "starting");
//Posting user data to script
JSONObject json = jsonParser.makeHttpRequest(
GETYOURMOVE_URL, "POST", params);
if(json == null)
{
Log.d("json","json returning null");
return null;
}
success = json.getInt(TAG_SUCCESS);
if (success == 1) {
products = json.getJSONArray(TAG_PRODUCTS);
Log.d("Notification","BEFORE FOR LOOP");
Log.d("",products.length()+" LENGTH");
for (int i = 0; i < products.length(); i++) {
JSONObject c = products.getJSONObject(i);
String yourmove_pid = c.getString(TAG_YOURMOVE_ID);
String player_name = c.getString(TAG_YOURMOVE_NAME);
// yourmove_pic.add(Get_FB_Image.getFBImage(yourmove_pid));
Players player=new Players(yourmove_pid,player_name);
yourmove_list.add(player);
yourmove_id.add(yourmove_pid);
yourmove.add(player_name);
Log.d("Vs_facebook","going to add bitmap facebook image");
yourmove_pic.add(Get_FB_Image.getFBImage(yourmove_pid));
Log.d("Vs_facebook"," facebook image added");
Log.d("User Created!", json.toString()+"CONGRETS");
}
Log.d("","AFTER FOR LOOP yourmove_id "+yourmove_id);
return json.getString(TAG_MESSAGE);
}else{
Log.d("Login Failure!", "SUCCESS FAILED");
return json.getString(TAG_MESSAGE);
}
} catch (JSONException e) {
e.printStackTrace();
}
catch(Exception e){}
return null;
}
/**
* After completing background task Dismiss the progress dialog
* **/
}
在我的getFBImage中,我得到的个人资料图片如下
URL img_value = null;
img_value = new URL("http://graph.facebook.com/"+fb_id+"/picture?type=small");
fb_image = BitmapFactory.decodeStream(img_value.openConnection().getInputStream());
return fb_image;
根据我的说法,这应该通过内存出错误异常来解决,为了解决这个问题,这里有一些链接可以帮助您解决这个问题:
可以处理可能是
获取FB\u图像。getFBImage(yourmove\u pid)
解码流并返回位图。如果是这种情况,可能是流解码生成位图尚未完成,这就是为什么在获取位图时应用程序被卡住。您遇到了什么错误?也请发布您的日志。是您的Get\u FB\u Image.getFBImage(yourmove\u pid)
returnBitmap
?您是否收到空指针异常?它可能会抛出一个“outofmemory错误”。我没有收到任何异常,它被卡在Log.d(“Vs\u facebook”,“要添加位图facebook图像”);是的,当我使用此方法将图像直接设置到图像视图时,我获得了facebook图像。请参见上文,我使用getFBImage()定义编辑了我的帖子。请告诉我在位图阵列中存储图像需要添加哪些额外内容。您可以添加执行流解码的异步任务。在这种情况下,只需通知用户当前正在后台解码配置文件。只要想想合适的词语和句子就可以通知用户。如果我没有弄错的话,Android应该避免从主线程中的流进行解码,这就是为什么最好有一个后台任务(AsyncTask)来执行解码。
URL img_value = null;
img_value = new URL("http://graph.facebook.com/"+fb_id+"/picture?type=small");
fb_image = BitmapFactory.decodeStream(img_value.openConnection().getInputStream());
return fb_image;