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が、 newThread(new Runnable()はこのクラスも内部クラスであり、どのクラスがその外部クラスですか??? 内部クラスの場合、new OnClickListener()このクラスは MainActivity メンバーにアクセスできますか?

4

1 に答える 1

0

皮肉を言うつもりはありませんが、このことを知らないのであれば、Activity 内でスレッドを開始しようとするべきではありません。Android は、スレッドのライフ サイクルとバックグラウンド作業の実行方法に関してかなり独特です。一般に、スレッドではバックグラウンド作業を行うべきではありません。少なくとも AsyncTask で実行する必要があります。できれば、ワーク ユニットの適切なライフサイクル追跡を提供できる Service で実行する必要があります。

質問に直接答えるには、ネストされたクラスに関するドキュメントとこの回答を確認してください。

于 2013-07-28T04:05:31.360 に答える