2012-04-20 14 views
0

私は毎日のアプリで使用する画像、webviews、多くの一般的なビューでlistviewを含むアンドロイドでアプリを開発しています。私のアプリは正常に動作しますが、3〜4回実行すると、現在のアクティビティから突然クラッシュし、前のアクティビティに移動します。どうしてか分かりません。例外やエラーは発生しません。そして、私はその活動を3〜4回再開し、それは適切に働き、再びクラッシュします。誰がなぜそれが起こったのか教えてください。メモリ管理である可能性があります。Androidで突然アクティビティがクラッシュする

主に、リストビューの動作がクラッシュしました。しかし、データがリストビューに読み込まれてクラッシュした場合、例外が発生します。私はまた、スレッド、imagesloader、viewholderを使用しています。しかし、何が問題かを見つけることができません!

リストビューのアダプタがある:

public class SavedAdapter extends BaseAdapter { 

Context context; 
JSONArray jsonArraySaved; 
JSONObject jsonObjectSaved; 
String user_id = "", distance = ""; 

public SavedAdapter(Context context, JSONArray jsonArraySaved) { 
    this.context = context; 
    this.jsonArraySaved = jsonArraySaved;  
} 

@Override 
public int getCount() { 
    // TODO Auto-generated method stub 
    return jsonArraySaved.length(); 
} 

@Override 
public JSONObject getItem(int position) { 
    // TODO Auto-generated method stub 
    try { 
     return jsonArraySaved.getJSONObject(position); 
    } catch (JSONException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     return null; 
    } 
} 

@Override 
public long getItemId(int position) { 
    // TODO Auto-generated method stub 
    return 0; 
} 

public static class ViewHolder { 
    public GothicBoldTextView textViewFullName, textViewDistance; 
    public GothicTextView textViewHeadLine, textViewTags; 
    public ImageView imageViewPhoto;   
} 

@Override 
public View getView(final int position, View rawView, ViewGroup parent) { 
    // TODO Auto-generated method stub  
    ViewHolder viewHolder; 
    if (rawView == null) { 
     rawView = LayoutInflater.from(context).inflate(
       R.layout.featured_events_list_item3, null); 
     viewHolder = new ViewHolder(); 
     viewHolder.textViewFullName = (GothicBoldTextView) rawView 
       .findViewById(R.id.textViewFullName); 
     viewHolder.textViewHeadLine = (GothicTextView) rawView 
       .findViewById(R.id.textViewHeadLine); 
     viewHolder.textViewTags = (GothicTextView) rawView 
       .findViewById(R.id.textViewTags); 
     viewHolder.textViewDistance = (GothicBoldTextView) rawView 
       .findViewById(R.id.textViewDistance); 
     viewHolder.imageViewPhoto = (ImageView) rawView 
       .findViewById(R.id.imageViewPhoto); 
     rawView.setTag(viewHolder); 
    } else { 
     viewHolder = (ViewHolder) rawView.getTag(); 
    } 
    try { 
     jsonObjectSaved = getItem(position); 
     if (jsonObjectSaved.has("distance")) { 
      distance = jsonObjectSaved.getString("distance"); 
      viewHolder.textViewDistance.setText(AccessClass 
        .getDistance(distance)); 
     } 
     if (jsonObjectSaved.has("profile")) { 
      jsonObjectSaved = jsonObjectSaved.getJSONObject("profile"); 
      if (jsonObjectSaved.has("firstname")) 
       viewHolder.textViewFullName.setText(jsonObjectSaved 
         .getString("firstname")); 
      if (jsonObjectSaved.has("lastname")) 
       viewHolder.textViewFullName 
         .setText(viewHolder.textViewFullName.getText() 
           + " " 
           + jsonObjectSaved.getString("lastname")); 
      if (jsonObjectSaved.has("headline")) 
       viewHolder.textViewHeadLine.setText(jsonObjectSaved 
         .getString("headline")); 
      if (jsonObjectSaved.has("tags")) { 
       String tags = ""; 
       for (int i = 0; i < jsonObjectSaved.getJSONArray("tags") 
         .length(); i++) { 
        tags += jsonObjectSaved.getJSONArray("tags") 
          .getJSONObject(i).getString("name") 
          + ", "; 
       } 
       viewHolder.textViewTags.setText(tags.substring(0, 
         tags.length() - 2)); 
      } 
      if (jsonObjectSaved.has("avatar_thumb")) { 

       if (!jsonObjectSaved.getString("avatar_thumb").equals(
         "/avatars/thumb/missing.png")) { 
        viewHolder.imageViewPhoto.setTag(jsonObjectSaved 
          .getString("avatar_thumb")); 
        SplashActivity.imageLoader.displayImage(context 
          .getResources().getString(R.string.domain) 
          + jsonObjectSaved.getString("avatar_thumb"),         
          viewHolder.imageViewPhoto); 

       } else if (!jsonObjectSaved.isNull("picture_url")) {        
        viewHolder.imageViewPhoto.setTag(jsonObjectSaved 
          .getString("picture_url")); 
        SplashActivity.imageLoader.displayImage(
          jsonObjectSaved.getString("picture_url"),        
          viewHolder.imageViewPhoto); 
       } 
      } else if (jsonObjectSaved.has("picture_url") 
        && !jsonObjectSaved.isNull("picture_url")) {      
       viewHolder.imageViewPhoto.setTag(jsonObjectSaved 
         .getString("picture_url")); 
       SplashActivity.imageLoader.displayImage(
         jsonObjectSaved.getString("picture_url"),       
         viewHolder.imageViewPhoto); 
      } else {      
       viewHolder.imageViewPhoto.setTag("null"); 
       viewHolder.imageViewPhoto.setImageResource(R.drawable.photo2); 
      } 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    rawView.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      try { 
       Intent intent; 
       intent = new Intent(context, PublicProfileActivity.class); 
       intent.putExtra("public_profile_id", "" 
         + getItem(position).getString("id")); 
       context.startActivity(intent); 
      } catch (Exception e) { 
       // TODO: handle exception 
       e.printStackTrace(); 
      } 
     } 
    }); 
    rawView.invalidate(); 
    return rawView; 
} 
} 
+0

と思います。問題と思われるコードを表示できますか?それを追跡するために何をしたのか説明してください。 –

+0

お返事ありがとうございます。私はlistviewの私のアダプタコードに言及している。しかし、それは適切に働いています。 – vajapravin

+0

クラッシュのlogcatを投稿してください。 –

答えて

0

私は、これはより多くの情報なしに答えることは非常に困難であるあなたがかもしれない

adapter.imageLoader.clearCache(); 
adapter.imageLoader.stopThread(); 
listView.setAdapter(null); 
+0

お返事ありがとうございます、私はあなたのコードをチェックします。 – vajapravin

関連する問題