Java 延迟代码执行而不崩溃

Java 延迟代码执行而不崩溃,java,android,Java,Android,我正在寻找一种方法来延迟我的应用程序创建和显示祝酒词。我使用了几个不同的时间间隔,最大的是5分钟。我正在使用睡眠延迟程序,但大约一分钟后,应用程序将崩溃。任何帮助都将不胜感激。如果需要更多信息,请告诉我!谢谢 这是一个AsyncTask,在调用它5秒后显示Toast public class ToastAsyncTask extends AsyncTask<String,Void,String> { private Context mContext;

我正在寻找一种方法来延迟我的应用程序创建和显示祝酒词。我使用了几个不同的时间间隔,最大的是5分钟。我正在使用睡眠延迟程序,但大约一分钟后,应用程序将崩溃。任何帮助都将不胜感激。如果需要更多信息,请告诉我!谢谢

这是一个AsyncTask,在调用它5秒后显示Toast

public class ToastAsyncTask extends AsyncTask<String,Void,String>
    {
        private Context mContext;

        public SaveAuctionAsyncTask(Context mContext)
        {
            this.mContext = mContext;
        }

        protected void onPreExecute()
        {

        }

        @Override
        protected String doInBackground(String... arg0)
        {
            Thread.sleep(300000); //300000 is 5 minutes
        }

        @Override
        protected void onPostExecute(String result)
        {
            Toast.makeText(mContext, "Showing toast", Toast.LENGTH_LONG).show();
        }
    }

这是一个AsyncTask,在调用它5秒后显示Toast

public class ToastAsyncTask extends AsyncTask<String,Void,String>
    {
        private Context mContext;

        public SaveAuctionAsyncTask(Context mContext)
        {
            this.mContext = mContext;
        }

        protected void onPreExecute()
        {

        }

        @Override
        protected String doInBackground(String... arg0)
        {
            Thread.sleep(300000); //300000 is 5 minutes
        }

        @Override
        protected void onPostExecute(String result)
        {
            Toast.makeText(mContext, "Showing toast", Toast.LENGTH_LONG).show();
        }
    }

您可以使用处理程序的
postDelayed
稍后在主UI线程中执行代码:

int delay = 2000;

Handler handler = new Handler();

// to execute in 2 sec
handler.postDelayed(new Runnable() {
  @Override
  public void run() {
     Toast.makeText(mContext, "Showing toast", Toast.LENGTH_LONG).show();
}}, delay);

您可以使用处理程序的
postDelayed
稍后在主UI线程中执行代码:

int delay = 2000;

Handler handler = new Handler();

// to execute in 2 sec
handler.postDelayed(new Runnable() {
  @Override
  public void run() {
     Toast.makeText(mContext, "Showing toast", Toast.LENGTH_LONG).show();
}}, delay);

您可以使用AsyncTask或线程之类的工具,只需指定thread.sleep(毫秒);您可以使用AsyncTask或线程之类的工具,只需指定thread.sleep(毫秒);不应该从主线程调用Toast.show()吗?然后,这个代码段将抛出和异常并崩溃感谢您注意到这一点,但在onPostExecute中是允许的method@NannuoLei他的代码很好,您可以从onPostExecute运行简单的UI事件fine@Arlind当我多次使用doInBackground时,onPostExecute中的所有操作都会立即执行。无论如何,为了避免这种情况,不应该从主线程调用Toast.show()吗?然后,这个代码段将抛出和异常并崩溃感谢您注意到这一点,但在onPostExecute中是允许的method@NannuoLei他的代码很好,您可以从onPostExecute运行简单的UI事件fine@Arlind当我多次使用doInBackground时,onPostExecute中的所有操作都会立即执行。要避免这种情况,请使用view.postDelayed()跳过新的处理程序()部分。使用view.postDelayed()跳过新的处理程序()部分。