android中的内部类

时间:2013-07-28 03:32:55

标签: android inner-classes

在以下代码中:

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button btn = (Button) findViewById(R.id.btn1);


        // On button click call this listener
        btn.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {


                Thread background = new Thread(new Runnable() {
                    public void run() {
                        //Do some work here !
                    }};
                };

上面的代码中新的new OnClickListener()是类MainActivity中的匿名内部类,但是新的Thread(new Runnable()是什么呢?这个类也是一个内部类,哪个类是它的外层?如果它是new OnClickListener()内的内部类,这个类可以访问MainActivity成员吗?

1 个答案:

答案 0 :(得分:0)

我不想听起来很讽刺,但如果你不知道这一点,那么你可能不应该尝试在Activity中启动线程。 Android在线程生命周期以及如何执行后台工作方面非常奇特。通常,任何后台工作都不应该在Thread中完成。至少应该在AsyncTask中完成,更好的是在服务中,可以提供对工作单元的正确生命周期跟踪。

要直接回答您的问题,请查看Nested Classes和此answer上的文档。