Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 碎片内存管理_Android_Memory Management_Fragment - Fatal编程技术网

Android 碎片内存管理

Android 碎片内存管理,android,memory-management,fragment,Android,Memory Management,Fragment,我将列表视图放置在项目单击侦听器代码上,供您参考。在列表视图中的每个项目单击时,我将用另一个片段替换片段。我将主片段(片段1)放置在框架布局文件中。我只是在同一视图中切换片段 listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapter,

我将列表视图放置在项目单击侦听器代码上,供您参考。在列表视图中的每个项目单击时,我将用另一个片段替换片段。我将主片段(片段1)放置在框架布局文件中。我只是在同一视图中切换片段

 listView.setOnItemClickListener(new OnItemClickListener() {
                   @Override
                   public void onItemClick(AdapterView<?> adapter, View view, int position, long arg) {

                  if(array[position].equalsIgnoreCase("movies")){
                       FragmentTransaction transaction = getFragmentManager().beginTransaction();
                       transaction.replace(R.id.fragment1, new next());

                       transaction.commit();
                  }
                  if(array[position].equalsIgnoreCase("serials")){
                       FragmentTransaction transaction = getFragmentManager().beginTransaction();
                   transaction.replace(R.id.fragment1, new Item2());

                       transaction.commit();
                 }  
                  if(array[position].equalsIgnoreCase("restaurents")){
                       FragmentTransaction transaction = getFragmentManager().beginTransaction();
                   transaction.replace(R.id.fragment1, new Item3());

                       transaction.commit();
                 }     
                   } 
                });
listView.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(适配器视图适配器、视图视图、整型位置、长参数){
if(数组[位置].equalsIgnoreCase(“电影”)){
FragmentTransaction=getFragmentManager().beginTransaction();
事务.replace(R.id.fragment1,new next());
commit();
}
if(数组[位置].equalsIgnoreCase(“序列”)){
FragmentTransaction=getFragmentManager().beginTransaction();
事务.replace(R.id.fragment1,newitem2());
commit();
}  
if(数组[position].equalsIgnoreCase(“restaurents”)){
FragmentTransaction=getFragmentManager().beginTransaction();
事务.replace(R.id.fragment1,newitem3());
commit();
}     
} 
});
如果我点击电影,片段1同样会被新片段(项目1)替换 如果我点击序列,片段1将被新片段替换(项目2)
我认为当我切换到新片段(项目1)时,fragment1内存将被释放,当我点击片段(项目2)时,片段(项目1)将被释放,告诉我它是否会以相同的方式工作。因为我需要为每个列表项目使用更多的片段,所以单击(列表中的项目数量将更多)。我想知道它是否会以同样的方式发生,是否有任何方法来管理片段的内存。建议我一种更好的方法,因为我希望我的应用程序在没有内存泄漏的情况下运行

您可以使用片段生命周期方法简单地检查这一点

public void onStart() {
    super.onStart();
    Log.d(LOG_TAG, "Fragment1 onStart");
  }

  public void onResume() {
    super.onResume();
    Log.d(LOG_TAG, "Fragment1 onResume");
  }

  public void onPause() {
    super.onPause();
    Log.d(LOG_TAG, "Fragment1 onPause");
  }

  public void onStop() {
    super.onStop();
    Log.d(LOG_TAG, "Fragment1 onStop");
  }

  public void onDestroyView() {
    super.onDestroyView();
    Log.d(LOG_TAG, "Fragment1 onDestroyView");
  }

  public void onDestroy() {
    super.onDestroy();
    Log.d(LOG_TAG, "Fragment1 onDestroy");
  }

  public void onDetach() {
    super.onDetach();
    Log.d(LOG_TAG, "Fragment1 onDetach");
  }