Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6600883
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 25, 20262026-05-25T18:40:53+00:00 2026-05-25T18:40:53+00:00

I’m implementing a simple chatting application which has a TextView for text messages and

  • 0

I’m implementing a simple chatting application which has a TextView for text messages and a EditText for input.
I update my TextView by following method:

    private void addChatContent(String authorName, String content){
    final String newLine = authorName+" : "+content+"\n";
    chat_content.append(newLine);
    scroll.post(new Runnable(){
        @Override
        public void run() {
            scroll.smoothScrollTo(0, chat_content.getBottom()+5000);
        }
    });
}

A problem I’m facing is: when there are new incoming messages, UI thread will be busy for refreshing the TextView. It makes my EditText become lag, I can hardly edit my input.
I can not refresh the TextView with another thread, right?
So what should I do to overcome this limitation?
Could somebody give me some light? Thanks in advance.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-25T18:40:54+00:00Added an answer on May 25, 2026 at 6:40 pm

    Ultimately, and unfortunately, there is only one thread dedicated to the UI. If you are updating the TextView there is no way you can simultaneously have a lag-free experience with the EditText. You already know this, but I fear some people answering this question may not, so here’s a reference:

    The system does not create a separate thread for each instance of a
    component. All components that run in the same process are
    instantiated in the UI thread, and system calls to each component are
    dispatched from that thread. Consequently, methods that respond to
    system callbacks (such as onKeyDown() to report user actions or a
    lifecycle callback method) always run in the UI thread of the process

    …

    When your app performs intensive work in response to user interaction,
    this single thread model can yield poor performance unless you
    implement your application properly. Specifically, if everything is
    happening in the UI thread, performing long operations such as network
    access or database queries will block the whole UI. When the thread is
    blocked, no events can be dispatched, including drawing events.

    …

    Additionally, the Andoid UI toolkit is not thread-safe. So, you must
    not manipulate your UI from a worker thread—you must do all
    manipulation to your user interface from the UI thread. Thus, there
    are simply two rules to Android’s single thread model:

    Do not block the UI thread
    Do not access the Android UI toolkit from outside the UI thread

    Hence, the answer is quite clear: don’t do this. Why does the Textview have to be absolutely, 100% up to date, as the user is updating the EditText field? Why are you scrolling all the way to the bottom; maybe you can get away with deleting most of the contents of the TextView and, when the user scrolls, dynamically re-adding content to it?

    IMO you should focus on reducing the amount of work you need to do on the TextView.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I'm parsing an RSS feed that has an ’ in it. SimpleXML turns this
I have a text area in my form which accepts all possible characters from
link Im having trouble converting the html entites into html characters, (&# 8217;) i
That's pretty much it. I'm using Nokogiri to scrape a web page what has
I have just tried to save a simple *.rtf file with some websites and
I want to count how many characters a certain string has in PHP, but
For some reason, after submitting a string like this Jack’s Spindle from a text
I am trying to understand how to use SyndicationItem to display feed which is
I used javascript for loading a picture on my website depending on which small
Basically, what I'm trying to create is a page of div tags, each has

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.