首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在android中显示一段时间的消息,然后将其显示出来

如何在android中显示一段时间的消息,然后将其显示出来
EN

Stack Overflow用户
提问于 2012-09-24 18:23:46
回答 5查看 344关注 0票数 1

所以我有主UI线程,并且有一个函数需要花费相当多的时间。所以我想在那个时候在屏幕上向用户显示一些东西,但我不想把我的函数放到线程中,因为它需要一些GUI通信。

所以我需要的是这个

代码语言:javascript
运行
复制
 Message msg;
 msg.wait("wait dude");
 //my code
 msg.dismis_wait();

有什么想法吗?

我试着把我的代码放到线程中,但有一个问题,在代码的末尾我需要改变我的视图,而我不能在线程中做到这一点。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-09-24 18:39:57

您可以像其他答案建议的那样使用Toast

如果您有长时间运行的代码,也可以使用单独的Thread,并使用Handler向主线程发送消息,以便在屏幕中进行更改。

你也可以使用AsyncTask,这是一个安卓特殊的线程,它允许你在运行期间改变视图,这是在doInBackground方法中完成的。

票数 1
EN

Stack Overflow用户

发布于 2012-09-24 18:26:07

Message不是您想要使用的。

您应该尝试使用Toast Notifications

下面是文档中的一个示例:

代码语言:javascript
运行
复制
Context context = getApplicationContext();
CharSequence text = "Hello toast!";
int duration = Toast.LENGTH_SHORT;

Toast toast = Toast.makeText(context, text, duration);
toast.show();
票数 1
EN

Stack Overflow用户

发布于 2012-09-24 18:26:47

如果你想要一个吐司消息,你可以这样做:

代码语言:javascript
运行
复制
for (int i=0; i < 2; i++) { 
    Toast.makeText(yourclass.this, " Here you message ", Toast.LENGTH_LONG).show();
}

对于吐司,您只能选择显示长时间或短时间,但不能定义时间。我在这里显示了两次相同的吐司消息,并且用了两倍的时间我想要显示它。

将整个代码放在一个scheduleTaskExecutor中。它在后台逐行运行代码。这样你就可以在开始时展示你的敬酒信息了。下面是一个示例:

首先声明

代码语言:javascript
运行
复制
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);

您可以使用以下命令停止线程:

代码语言:javascript
运行
复制
 scheduleTaskExecutor.shutdownNow();

您也可以延迟启动它,或者只运行一次,或者以其他方式运行。查看文档:https://developer.android.com/reference/java/util/concurrent/ScheduledExecutorService.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12563082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档