Was ist der beste Weg, um Speicherlecks im Android-Fragment zu vermeiden?Android

Forum für diejenigen, die für Android programmieren
Anonymous
 Was ist der beste Weg, um Speicherlecks im Android-Fragment zu vermeiden?

Post by Anonymous »

Ich habe viele Möglichkeiten gefunden, Speicherlecks in Android-Fragmenten zu vermeiden, aber welche ist die beste?

1.Setzen Sie die Ansicht auf null, wenn onDestroyView aufgerufen wird

Code: Select all

public class LeakyFragment extends Fragment{

private View mLeak; // retained

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mLeak = inflater.inflate(R.layout.whatever, container, false);
return mLeak;
}

@Override
public void onDestroyView() {
super.onDestroyView();
mLeak = null; // now cleaning up!
}
}
2.Setzen Sie alle untergeordneten Ansichten auf Null und entfernen Sie die Ansicht

Code: Select all

    @Override
public void onDestroyView(){
super.onDestroyView();
unbindDrawables(mLeak);
}

private void unbindDrawables(View view){
if (view.getBackground() != null){
view.getBackground().setCallback(null);
}
if (view instanceof ViewGroup && !(view instanceof AdapterView)){
for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++){
unbindDrawables(((ViewGroup) view).getChildAt(i));
}
((ViewGroup) view).removeAllViews();
}
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post