【问题标题】:Stopping executing tasks in android activity停止在android活动中执行任务
【发布时间】:2014-02-27 06:29:25
【问题描述】:

我正在阅读 How to avoid force close error 。在这里,作者表明,如果引发未捕获的异常,它将重定向到另一个活动。

我的问题是,有没有办法stop all executing task on that activity 并将错误显示为 toast,并且不要去其他活动显示错误。

so the main problem in the above question is how to stop executing 
task(like asyntask) that are currently running on that activity?

【问题讨论】:

  • 它与异常处理无关。它关于如何停止所有当前正在运行的任务。
  • 他们会被杀的。作者杀死所有任务的当前进程,然后 android 将创建新进程,其中将显示错误活动。恕我直言,这不是一个很好的解决方案。

标签: android android-activity android-asynctask


【解决方案1】:

如果我没听错的话,您希望在发生异常时立即停止所有异步任务。为此,您可以在 try 块和 catch 块中编写可疑代码,检查异步任务的状态,如果它正在运行,请停止它。您可以像这样检查状态:

if(yourAsyncTask.getStatus() == AsyncTask.Status.RUNNING){
      yourAsyncTask.cancel(true); // cancel or stop your task.
}

【讨论】:

  • 这取决于你在 asynctask 中做什么。 yourTask.cancel(true) 通常会发送一个中断信号。你可以通过 isCancelled() 来检查它,如果它返回 true,就打破你的循环。或者您也可以使用自定义标志,当错误出现时将它们设置为 false 并在 doInBackground() 中检查它们..
【解决方案2】:

在android中强制关闭有几个原因

运行时异常的大多数原因是空指针。永远避免这些问题!这是非常必要的。

使用try catch 块可以避免这个问题。

try{
    // your code where you are unsure what is the output
}catch(exception e)
{
 e.printStackTrace();
 //display the occurred exception as a toast (as you asked in the ques) 
 Toast.makeText(context, "exception : "+e.toString(), Toast.LENGTH_LONG).show();
}

其他错误情况 - 特别是在 android 中 - 主要是使用错误或缺少从一个活动到另一个活动的上下文。

【讨论】:

    【解决方案3】:

    你试过了吗..

        myTask.stop();
    

    【讨论】:

    • 我猜 asyntask 没有停止方法。
    猜你喜欢
    • 2022-01-01
    • 2014-02-06
    • 2014-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多