Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

Android Threads and Services Threads in Android Creating a Thread

Cant see where the error is coming from

Challenge Task 1 of 1

We've been seeing a lot of "Application Not Responding" errors with our custom Twitter app. Could you fix this by moving the 'twitterClient.update()' call to a separate Thread named 'TwitterThread'? Bummer! There is a compiler error. Please click on preview to view your syntax errors! Preview Get Help Reset Code Recheck work MainActivity.java

Ask a Question

MainActivity.java
public class MainActivity extends Activity {
    TwitterClient twitterClient = new TwitterClient();

    @Override
    public void onCreate(Bundle savedInstanceState) {
      setContentView(R.layout.activity_main);

 TwitterThread twitterThread = new TwitterThread();
      twitterThread.setName("TwitterThread");
      twitterThread.start();
    }

    public class TwitterThread extends Thread {
      @Override
      public void run() {
        twitterClient.update();
      } 
    }
}

3 Answers

Julian Garcia
Julian Garcia
18,380 Points

You need to create your run method inside a runnable. Then you need assign that runnable to a new thread, then set the name and finally start the thread.

      Runnable runnable = new Runnable() {
        @Override
        public void run() {
          twitterClient.update();
        }
      };

      Thread thread = new Thread(runnable);
      thread.setName("TwitterThread");
      thread.start();

Hope this help.

it didn't work for me I keep getting errors

./MainActivity.java:22: error: expected thread.setName("TwitterThread"); ^ ./MainActivity.java:22: error: illegal start of type thread.setName("TwitterThread"); ^ ./MainActivity.java:23: error: expected thread.start(); ^ ./MainActivity.java:22: error: package thread does not exist thread.setName("TwitterThread"); ^ ./MainActivity.java:23: error: package thread does not exist thread.start(); ^ 5 errors

public class MainActivity extends Activity { TwitterClient twitterClient = new TwitterClient();

@Override
public void onCreate(Bundle savedInstanceState) {
  setContentView(R.layout.activity_main);

TwitterThread twitterThread = new TwitterThread(); twitterThread.setName("TwitterThread"); twitterThread.start(); }

public class TwitterThread extends Thread {
  Runnable runnable = new Runnable() {
    @Override
    public void run() {
      twitterClient.update();
    }
  };

  Thread thread = new Thread(runnable);
  thread.setName("TwitterThread");
  thread.start();
}

}

It worked thank you so much

it worked