The*_*Man 2 android android-asynctask
我试图在Async中的OnPostExecture中发布一个Toast.
这是我所做的,但它没有记录,也没有烘烤.
protected class sendDetails extends AsyncTask<Context, Integer, Boolean>
{
@Override
protected Boolean doInBackground(Context... params)
{
try
{
Thread.sleep(1000);
}
catch (InterruptedException e)
{
}
sendEmail();
return true;
}
@Override
protected void onPostExecute(Boolean result)
{
runOnUiThread(new Runnable()
{
public void run()
{
Toast.makeText(mContext, "Email Succesfully Sent...", Toast.LENGTH_SHORT).show();
}
});
}
@Override
protected void onPreExecute()
{
super.onPreExecute();
finish();
}
}
Run Code Online (Sandbox Code Playgroud)
我也尝试过以下方法:
声明上下文:
private Context mContext;
Run Code Online (Sandbox Code Playgroud)
//调用异步
new sendDetails(mContext).execute();
Run Code Online (Sandbox Code Playgroud)
//异步代码:
protected class sendDetails extends AsyncTask<Context, Integer, Boolean>
{
public sendDetails(final Context context)
{
mContext = context;
}
@Override
protected Boolean doInBackground(Context... params)
{
try
{
Thread.sleep(1000);
}
catch (InterruptedException e)
{
}
sendEmail();
return true;
}
@Override
protected void onPostExecute(Boolean result)
{
runOnUiThread(new Runnable()
{
public void run()
{
Toast.makeText(mContext, "Email Succesfully Sent...", Toast.LENGTH_SHORT).show();
}
});
}
@Override
protected void onPreExecute()
{
super.onPreExecute();
finish();
}
}
Run Code Online (Sandbox Code Playgroud)
两者都没用.如何从Async敬酒..有人可以帮我解决这个问题吗?
更新:
根据JDJ,matiash和RajaReddy PolamReddy改变
remove Finish(); 在onPreExecute中.并在OnPostExecute中添加以下内容:
Toast.makeText(MainActivity.this, "Email Succesfully Sent...", Toast.LENGTH_SHORT).show();
finish();
Run Code Online (Sandbox Code Playgroud)
谢谢!
你不必调用runOnUiThread()的onPostExecute()......它已经在该点的UI线程上.
所以你的onPostExecute()应该是这样的:
@Override
protected void onPostExecute(Boolean result)
{
Toast.makeText(mContext,
"Email Succesfully Sent...",
Toast.LENGTH_SHORT).show();
}
Run Code Online (Sandbox Code Playgroud)
通过finish()在后台线程启动之前在onPreExecute()中执行活动,在后台线程完成并调用mContextonPostExecute()之后,您传入Toast构造函数的inPostExecute()可能甚至不再有效.
| 归档时间: |
|
| 查看次数: |
4256 次 |
| 最近记录: |