具有runnable的基本活动

时间:2013-04-20 11:21:44

标签: java android android-activity

简介:我已将基本活动扩展到我的其他活动。我在函数体中使用runnables覆盖了几个方法,例如:

@Override
    protected void onStop(){
        new Handler().postDelayed(new Runnable()
        {
            @Override
            public void run()
            {
                BaseActivity.super.onStop();
            }
        }, Fade.fadeDuration);
    }

然而,当我尝试运行应用程序时,我收到SuperNotCalledException。如果我从runnable中取出super.onStop(),我就不会有任何例外。

问题:如何从基础活动中的runnable调用super.onStop而不会导致SuperNotCalledException?

其他信息:我正在尝试添加fadeoutanimation,这只会淡化某些视图。这需要大约700ms,所以我需要将onStop延迟700ms。问题是,在每个活动中编码都很麻烦。我想做一个基础活动,所以我不必担心每个活动都会消失。

1 个答案:

答案 0 :(得分:0)

如果您只是想延迟super.onStop的执行,我会使用CountDownLatch

也许是这样的:

private void CountDownLatch latch;
private void long latchWait = 10L; // seconds 
private void TimeUnit latchWaitUnit = SECONDS;

@Override
protected void onStop(){
   try{
       this.latch.await(this.latchWait, this.latchWaitUnit);
   catch(InterruptedException e){
       // Handle
   }finally{
       super.onStop();
   }
}

public void startLatch(long wait){
    this.latch = new CountDownLatch(1);
    this.latchWait = wait;
}

public void releaseLatch(){
   this.latch.countDown()
}

我没有测试此代码。