简介:我已将基本活动扩展到我的其他活动。我在函数体中使用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。问题是,在每个活动中编码都很麻烦。我想做一个基础活动,所以我不必担心每个活动都会消失。
答案 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()
}
我没有测试此代码。