2

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

我们是否必须删除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));
}

}

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

4

2 回答 2

3

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

于 2013-09-27T02:09:19.953 回答
0

每当您创建自己的侦听器时,您都会删除该侦听器,否则它将将该活动保存在内存堆上,但对于默认侦听器,java 会在该活动被销毁时处理它。

于 2013-09-27T02:50:54.130 回答