2

在以下代码中:

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 !
                    }};
                };

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

4

1 回答 1

0

我不想听起来刻薄,但如果你不知道这一点,那么你可能不应该尝试在 Activity 中启动线程。Android 在线程生命周期和如何执行后台工作方面非常奇特。一般来说,任何后台工作都不应该在线程中完成。至少应该在 AsyncTask 中完成,更好的是在可以提供工作单元的适当生命周期跟踪的 Service 中。

要直接回答您的问题,请查看有关嵌套类的文档和此答案

于 2013-07-28T04:05:31.360 回答