点击一个按钮,我想显示一个Toast Message,同时有一些工作正在完成但是即使我在开始时也没有显示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();
强制首先展示吐司的最佳方法是什么?谢谢你的时间
答案 0 :(得分:1)
您需要在活动类中创建一个扩展AsyncTask
。
UpdateDBTask task = new UpdateDBTask();
task.execute(someString);
在异步任务中,您定义了3个变量 - (所有不能是原始的:意味着int
例如必须是Integer
)。
首先是您发送到doInBackground()
中要使用的异步任务对象的内容。
其次,您使用onProgressUpdate()
更新主线程。
第三个是doInBackground()
返回的内容,onPostExecute()
将获取并用于显示结果(再次 - 在主线程中)。您不必使用它们中的任何一个(在我给您的代码中使用LIke),但在扩展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.
}
}