首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android:调用服务的super.onDestroy()在onDestroy()之外

Android:调用服务的super.onDestroy()在onDestroy()之外
EN

Stack Overflow用户
提问于 2012-02-09 09:30:50
回答 2查看 1.4K关注 0票数 0

我有一个正在播放音乐的服务。我已经实现了像这样的fade out

代码语言:javascript
复制
@Override
public void onDestroy(){
    volume=1.0f;
    fade_handler.post(fade_out);
    super.onDestroy();  
}

这里是fade_out Runnable

代码语言:javascript
复制
private Runnable fade_out = new Runnable(){
    public void run(){
        player.setVolume(volume, volume);
        if(volume>0.0f){
            volume-=0.05f;
            fade_handler.postDelayed(fade_out, 200);
        }
        else{
            player.stop();
            player.release();
            stopForeground(true);
            //here should be super.onDestroy()!!!!!!!
        }
    }
};

问题是,现在super.onDestroy()fade_out完成之前就被调用了,所以我想在这个可运行的中调用super.onDestroy(),但是是如何调用的

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-09 09:37:48

onDestroy()中这样做并不是最好的主意,因为这个方法应该进行清理。我建议你做以下几点:

创建一个像void fadeOutAndStop().

  • Set

  • 这样的方法来发布一个可运行的文件,它可以消除卷和调用stopSelf() (或者您现在使用的停止服务的方法)。

这样,您甚至不需要在onDestroy()中做任何特别的事情,而且设计将更加干净。

票数 2
EN

Stack Overflow用户

发布于 2012-02-09 09:56:12

正确的语法应该是YourServiceClassName.super.onDestroy(),但正如马尔科姆指出的那样,这不是一个好主意。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9208267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档