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