我们必须删除onClickListener吗?

时间:2013-09-27 01:59:34

标签: android onclicklistener

这看起来像一个简单的问题,但我只是想知道,

我们是否必须删除onClickListener或在我的情况下TabListener说明某个活动被销毁或暂停?

例如,这是我的代码:

package code.tabnav;

import adapter.SectionsPagerAdapter;
import android.app.ActionBar;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;

import com.example.tabnav.R;

public class Home extends FragmentActivity {

private ViewPager mViewPager;
private SectionsPagerAdapter mSectionsPagerAdapter;
private ActionBar.TabListener tabListener;

@Override
protected void onCreate(Bundle savedInstanceState) {

    /* On Create method */

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);
    mViewPager = (ViewPager) findViewById(R.id.pager);
    mSectionsPagerAdapter = new SectionsPagerAdapter(
            getSupportFragmentManager(), this);
    mViewPager.setAdapter(mSectionsPagerAdapter);
    mViewPager.setOffscreenPageLimit(1);

    mViewPager
            .setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
                @Override
                public void onPageSelected(int position) {
                    getActionBar().setSelectedNavigationItem(position);
                }
            });

    getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    tabListener = new ActionBar.TabListener() {
        public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
            mViewPager.setCurrentItem(tab.getPosition());
        }

        public void onTabUnselected(ActionBar.Tab tab,
                FragmentTransaction ft) {
        }

        public void onTabReselected(ActionBar.Tab tab,
                FragmentTransaction ft) {
        }
    };
    addNewTab("Home", tabListener);
    addNewTab("Latest", tabListener);
    addNewTab("Find", tabListener);
    addNewTab("Download", tabListener);
}

private final void addNewTab(String name, ActionBar.TabListener tabListener) {
    getActionBar().addTab(
            getActionBar().newTab().setText(name)
                    .setTabListener(tabListener));
}

}

任何信息都将不胜感激,谢谢!

2 个答案:

答案 0 :(得分:3)

您不必删除侦听器。它只是一个对象,如果它不再被引用,它应该被垃圾收集。你遇到了问题吗?

答案 1 :(得分:0)

每当你创建自己的监听器时,你就删除了那个监听器,否则它会在内存堆上保存该活动,但对于默认监听器,java会在该活动被销毁时处理它。