Android处理程序执行

时间:2013-10-18 14:22:34

标签: android handler execution

首先,请参阅下面的代码。

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 个答案:

答案 0 :(得分:0)

  

AAAA和BBBB会一起执行吗?

只有AAAA会被执行,当您post() Runnable时,您希望Handler执行Runnable中的代码。要执行BBBB,您必须使用Handler方法之一向sendMessage()发送消息。有关详细信息,请参阅doc

  

根据代码,消息不是从onCreate()发送的,所以AAAA是否收到空消息?

没有。如上所述,handleMessage()未被调用。

  

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

同样,第一个答案解释了为什么