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