Java 具有runnable的基本活动

Java 具有runnable的基本活动,java,android,android-activity,Java,Android,Android Activity,简介:我做了一个基本活动,将我的其他活动扩展到。我在函数体中使用Runnable重写了几个方法,例如: @Override protected void onStop(){ new Handler().postDelayed(new Runnable() { @Override public void run() { BaseActivity.super

简介:我做了一个基本活动,将我的其他活动扩展到。我在函数体中使用Runnable重写了几个方法,例如:

@Override
    protected void onStop(){
        new Handler().postDelayed(new Runnable()
        {
            @Override
            public void run()
            {
                BaseActivity.super.onStop();
            }
        }, Fade.fadeDuration);
    }
但是,当我尝试运行应用程序时,我会收到SuperNotCalledException。如果我把super.onStop()从runnable中去掉,我就不会有任何例外

问题:如何在基本活动中从runnable调用super.onStop,而不引起SuperNotCalledException


其他信息:我正在尝试添加一个淡出动画,它只淡出某些视图。这大约需要700毫秒,所以我需要将桌面延迟700毫秒。问题是,在每个活动中编写代码都很麻烦。我想做一个基础活动,这样我就不必担心每一项活动都会褪色

如果您试图简单地延迟
super.onStop
的执行,我将使用
countdownlock

也许是这样的:

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()
}

我没有测试此代码。

可能适用。为什么要这样做?我正在尝试添加一个淡出动画,它只淡出某些视图。这大约需要700毫秒,因此我需要将桌面延迟700毫秒。然后,您应该在活动中添加一个
淡出
功能,并在活动中调用
完成
时在那里制作动画。这就是我一直在做的。问题是,在每个活动中编写代码都很麻烦。我想做一个基础活动,这样我就不必担心每一项活动都会褪色。你确定吗??this.latch.wait(this.latchWait,this.latchWaitUnit);将在主线程中运行。是吗?@StinePike是的,当你在另一个线程中运行某个东西时,你可以使用它来延迟
onStop
的运行。你到底想做什么?不,我只是担心它会不会造成一场灾难。。为我的错误道歉ignorance@StinePike这可能会导致ANR,我不建议这样做。但是你想实现什么呢?也许有更好的办法。@Pike Oops,我想你已经问过这个问题了。无论如何,你是对的,这是个坏主意。