Java 具有runnable的基本活动
简介:我做了一个基本活动,将我的其他活动扩展到。我在函数体中使用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
@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,我想你已经问过这个问题了。无论如何,你是对的,这是个坏主意。