1

首先,看下面的代码。

public class SampleActivity extends Activity {

    private final Handler mLeakyHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            // AAAA
        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        Super. onCreate (savedInstanceState);

        // Post a message and delay its execution for 10 minutes.
        mLeakyHandler.postDelayed(new Runnable() {
            @Override
            public void run() {
                // BBBB
            }
        }, 60 * 10 * 1000);

        // Go back to the previous Activity.
        finish();
    }
}

忽略这可能导致内存泄漏的事实(我知道)。我的问题是:

  1. AAAA和BBBB会一起执行吗?如果不是,哪个会先执行?
  2. 根据代码,消息不是从 onCreate() 发送的,所以 AAAA 得到一个空消息吗?
  3. 当我运行代码时,似乎没有执行 AAAA。只执行 BBBB。为什么会这样?

提前致谢。

4

1 回答 1

0

AAAA和BBBB会一起执行吗?

只有 AAAA 会被执行,当你post()aRunnable时,你想要Handler执行Runnable. 要执行 BBBB,您必须Handler使用其中一种sendMessage()方法发送消息。有关详细信息,请参阅文档

根据代码,消息不是从 onCreate() 发送的,所以 AAAA 得到一个空消息吗?

不。如上所述,handleMessage()不调用。

当我运行代码时,似乎没有执行 AAAA。只执行 BBBB。为什么会这样?

同样,第一个答案解释了原因

于 2013-10-18T15:27:53.710 回答