在以下代码中:
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成员吗?
答案 0 :(得分:0)
我不想听起来很讽刺,但如果你不知道这一点,那么你可能不应该尝试在Activity中启动线程。 Android在线程生命周期以及如何执行后台工作方面非常奇特。通常,任何后台工作都不应该在Thread中完成。至少应该在AsyncTask中完成,更好的是在服务中,可以提供对工作单元的正确生命周期跟踪。
要直接回答您的问题,请查看Nested Classes和此answer上的文档。