Как начать деятельность из класса потока в Android? - PullRequest
9 голосов
/ 08 июня 2011

Я расширяю класс потока, и с этого класса я хочу начать действие.Как это сделать?

Ответы [ 3 ]

13 голосов
/ 24 мая 2013

Вам необходимо вызвать startActivity() в главном потоке приложения.Один из способов сделать это - сделать следующее:

  1. Инициализировать Handler и связать его с основным потоком приложения.

    Handler handler = new Handler(Looper.getMainLooper());
    
  2. Оберните код, который запустит Activity внутри анонимного Runnable класса и передаст его методу Handler#post(Runnable).

    handler.post(new Runnable() {
        @Override
        public void run() {
            Intent intent = new Intent (MyActivity.this, NextActivity.class);
            startActivity(intent);
        }
    });
    
0 голосов
/ 08 июня 2011

вы можете использовать что-то вроде этого.

public class MyActivity extends Activity
{
    Handler hander = new Handler(){
        public void handleMessage(Message m){
            Intent intent = new Intent (MyActivity.this, Next.class);
            startActivity(intent);
        }
    };
    pubilc void onCreate(Bundle ic)
    {
       //your code setContentView() etc....
       Thread toRun = new Thread()
       {
              public void run()
              {
                    hander.sendMessage(1); 
              }
       }
       toRun.start();
    }
}
0 голосов
/ 08 июня 2011

Хорошо, чтобы начать действие класса, класс должен расширяться с активностью по моему мнению.

Но если вы хотите начать деятельность с какой-то функцией потоков, вы можете сделать это.

Вместо расширений Thread используйте инструменты Runnable.После этого какого-то класса, у которого есть Activity, вы просто вызываете начальный поток, добавляете логику и запускаете Intent.

Я думаю, что это хорошее решение для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...