繁体   English   中英

如果调用取消或停止相同的功能,则重新启动(如果当前在Android中运行)

[英]if called Cancel or stop same function then start fresh if presently running in Android

我如何在Android中,如果已经调用了一个正在运行的函数,请取消/停止该函数,然后从头开始?

我的代码如下所示,基本上是在我的整个应用程序中调用了给定的函数(Important();),但是该函数没有运行几次,或者如果当前正在运行,则阻止用户再次运行该函数。 我想取消/停止当前正在运行的功能,然后重新启动它?

我该怎么做呢?

码:

public void Important() {
//Do lots of stuff
}

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Important();
    }

    @Override
    protected void onResume() {
        super.onResume();
    Important();
    }

我已经尝试过以下使用布尔值的方法。 但这只是阻止用户再次运行该功能(如果已运行)? (这不是我想做的)

我想要当函数再次被调用时。 运行功能已停止。 然后重新执行

码:

Boolean runningCode = false;
    public void Important() {
if (runningCode== false) { 
runningCode = true;
    //Do lots of stuff
runningCode = false;
    }

FYI

在我的应用程序中( 除上述内容之外 ), 多次调用 Important(),有时在Important()仍在运行时。 因此,有必要解决我的问题:-)

诸如重置变量和格式化页面之类的任务是在Important()中执行的; ,它不在单独的线程上运行。 这些是需要在主UI线程上完成的任务

您可以在UI线程上使用Handler并向其发布消息或Runnables。 使Important()函数中的每个离散操作都成为包含函数的消息或Runnable(例如resetVariables()formatThePage()等)。 每当您再次调用该函数时,只需在Handler上调用removeCallbacksAndMessages ,它将删除所有尚未执行的动作。

好吧,我不明白你为什么要这样做?

没有一个简单的答案。 可能有效的解决方案将是这样的

public void Important() {
if (runningCode == false) { 
    runningCode = true;
    //Do lots of stuff
    runningCode = false;
} else {
    // stop current code from execution
    runningCode = false;
    Important();
}

但是您必须弄清楚自己的代码才能停止当前执行,因为这可能导致对象等的损坏状态。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM