Android 如何在安卓系统中显示一段时间的消息
所以我有一个主UI线程,还有一个函数需要花费相当长的时间。所以我当时想在屏幕上向用户显示一些东西,但我不想将我的函数mve到线程中,因为它需要一些GUI通信 所以我需要的是这个Android 如何在安卓系统中显示一段时间的消息,android,message,Android,Message,所以我有一个主UI线程,还有一个函数需要花费相当长的时间。所以我当时想在屏幕上向用户显示一些东西,但我不想将我的函数mve到线程中,因为它需要一些GUI通信 所以我需要的是这个 Message msg; msg.wait("wait dude"); //my code msg.dismis_wait(); 有什么想法吗 我尝试将代码放入线程,但有一个问题,在代码结束时,我需要更改我的视图,我无法从线程执行此操作。消息不是您要使用的消息 你应该试试看 下面是文档中的一个示例: Conte
Message msg;
msg.wait("wait dude");
//my code
msg.dismis_wait();
有什么想法吗
我尝试将代码放入线程,但有一个问题,在代码结束时,我需要更改我的视图,我无法从线程执行此操作。
消息
不是您要使用的消息
你应该试试看
下面是文档中的一个示例:
Context context = getApplicationContext();
CharSequence text = "Hello toast!";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
如果你想要祝酒词,你可以这样做:
for (int i=0; i < 2; i++) {
Toast.makeText(yourclass.this, " Here you message ", Toast.LENGTH_LONG).show();
}
您也可以延迟启动它,或者只运行一次或以其他方式运行它。查看以下文档:您可以像建议的其他答案一样使用
Toast
如果您有长时间运行的代码,还可以使用单独的线程,并使用向主线程发送消息以在屏幕中进行更改
您还可以使用,一个,这是一个Android特殊线程,允许您在运行期间更改视图,这是通过doInBackground
方法完成的。尝试使用倒计时。以下是课堂:
public class MyCount extends CountDownTimer{
public MyCount(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
@Override
public void onFinish() {
// Dismiss message
}
@Override
public void onTick(long millisUntilFinished) {
}
}
并在onCreate中或在您希望显示消息的位置使用此选项
MyCount counter = new MyCount(15000,1000);
counter.start();
// Show message
启动计时器后,显示一条完成倒计时关闭消息。
可以在对象创建时更改值。第一个值即“15000”是以毫秒为单位的总时间,第二个值即“1000”是以毫秒为单位的每滴答时间
希望这能对您有所帮助。@gabrjan:of ir A
为您的查询提供了正确的解决方案。永远不要在主线程中运行长时间/cpu密集型操作。使用AsyncTask/线程执行ur后端操作,并使用handler实例发布ui更新。你也可以使用runOnUiThread来更新你的UI
runOnUiThread(new Runnable() {
public void run() {
HERE U CAN WRITE UR UI UPDATION CODE.
}
});
如果我使用toast,那么在开始编写toast.makeText(Main.this,“hereyoumessage”,toast.LENGTH_LONG.show()时会出现一个问题;直到所有代码都通过时才显示。我知道这很奇怪,但事实就是这样:S@Gabrjan:将整个代码放入scheduleTaskExecutor中。那个人在后台一行一行地运行代码。所以你可以在开始的时候展示你的祝酒词。请参阅上面的编辑。如果我使用toast,则在开始编写toast.makeText(Main.this,“Here you message”,toast.LENGTH_LONG.show()时会出现问题;直到所有代码都通过时才显示。我知道这很奇怪,但它是这样的:因此,如果我在最后更改视图,它根本不会显示:例如,在访问onCreate
方法时显示toast消息。如果你有长时间的进程代码,你应该考虑在线程中运行它。我有一个大约需要15秒的函数,在这段时间我想在屏幕上显示一些stuf…所以也许你正在寻找ProgressDialog
。这实际上是最好的答案,asynctack做到了。因为它是postexecute方法,顺便说一句,我可以在线程中执行吗?@gabrjan如果我理解正确,是的,你可以在常规线程中执行。您可以使用Handler,这是一种发送消息的机制。这样,当您完成线程执行时,您可以发送带有成功或不成功信号的消息,并分别更新屏幕。可以使用sendEmptyMessage
方法发送消息,其中的数字表示操作是否成功结束。
MyCount counter = new MyCount(15000,1000);
counter.start();
// Show message
runOnUiThread(new Runnable() {
public void run() {
HERE U CAN WRITE UR UI UPDATION CODE.
}
});