所以我有主UI线程,并且有一个函数需要花费相当多的时间。所以我想在那个时候在屏幕上向用户显示一些东西,但我不想把我的函数放到线程中,因为它需要一些GUI通信。
所以我需要的是这个
Message msg;
msg.wait("wait dude");
//my code
msg.dismis_wait();有什么想法吗?
我试着把我的代码放到线程中,但有一个问题,在代码的末尾我需要改变我的视图,而我不能在线程中做到这一点。
发布于 2012-09-24 18:39:57
您可以像其他答案建议的那样使用Toast。
如果您有长时间运行的代码,也可以使用单独的Thread,并使用Handler向主线程发送消息,以便在屏幕中进行更改。
你也可以使用AsyncTask,这是一个安卓特殊的线程,它允许你在运行期间改变视图,这是在doInBackground方法中完成的。
发布于 2012-09-24 18:26:07
Message不是您想要使用的。
您应该尝试使用Toast Notifications。
下面是文档中的一个示例:
Context context = getApplicationContext();
CharSequence text = "Hello toast!";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();发布于 2012-09-24 18:26:47
如果你想要一个吐司消息,你可以这样做:
for (int i=0; i < 2; i++) {
Toast.makeText(yourclass.this, " Here you message ", Toast.LENGTH_LONG).show();
}对于吐司,您只能选择显示长时间或短时间,但不能定义时间。我在这里显示了两次相同的吐司消息,并且用了两倍的时间我想要显示它。
将整个代码放在一个scheduleTaskExecutor中。它在后台逐行运行代码。这样你就可以在开始时展示你的敬酒信息了。下面是一个示例:
首先声明
private ScheduledExecutorService scheduleTaskExecutor;
scheduleTaskExecutor= Executors.newScheduledThreadPool(5);
// This schedule a task to run every 10 seconds:
scheduleTaskExecutor.scheduleAtFixedRate(new Runnable() {
public void run() {
for (int i=0; i < 2; i++){ Toast.makeText(yourclass.this, " Here you message ", Toast.LENGTH_LONG).show();}
try {
// your code here
} catch (IOException e) {
e.printStackTrace();
}
// If you need update UI, simply do this:
// runOnUiThread(new Runnable() {
// public void run() {
// update your UI component here.
// myTextView.setText("refreshed");
// }
// });
}
}, 0, 10, TimeUnit.SECONDS);您可以使用以下命令停止线程:
scheduleTaskExecutor.shutdownNow();您也可以延迟启动它,或者只运行一次,或者以其他方式运行。查看文档:https://developer.android.com/reference/java/util/concurrent/ScheduledExecutorService.html
https://stackoverflow.com/questions/12563082
复制相似问题