单击按钮时,我想在完成一些工作时显示 Toast 消息,但即使我在开始时有它,直到最后才显示 Toast
if (id == R.id.edit_score_button_update) {
Toast.makeText(this, "Updating please wait", Toast.LENGTH_LONG).show();
//Some code that update database
finish();
强制首先显示吐司的最佳方法是什么。谢谢你的时间
单击按钮时,我想在完成一些工作时显示 Toast 消息,但即使我在开始时有它,直到最后才显示 Toast
if (id == R.id.edit_score_button_update) {
Toast.makeText(this, "Updating please wait", Toast.LENGTH_LONG).show();
//Some code that update database
finish();
强制首先显示吐司的最佳方法是什么。谢谢你的时间
您需要在您的活动类中创建一个扩展类AsyncTask
。
UpdateDBTask task = new UpdateDBTask();
task.execute(someString);
在您的异步任务中,您定义了 3 个变量 - (所有变量都不能是原始的:int
例如,含义必须是Integer
)。
首先是您发送到异步任务对象以在doInBackground()
. 其次是您用来更新主线程的onProgressUpdate()
. 第三是doInBackground()
返回的内容,onPostExecute()
并将获取并用于显示结果(再次 - 在主线程中)。你不必使用它们中的任何一个(就像我给你的代码一样),但是你必须在扩展AsyncTask
.
public class UpdateDBTask extends AsyncTask<String, Integer, String> {
@Override
protected void onPreExecute() {
//Everything written here will happen in main thread before doInBackground() starts.
}
@Override
protected String doInBackground(String... params) {
//Do your things in different thread, allowing the main
//thread change things on GUI (Like showing toast...)
return null;
}
@Override
protected void onPostExecute(String result) {
//Everything you do here happens in the main thread AFTER doInBackground() is done.
}
}