Android - возможно ли использовать интерфейс API в другом классе, а поток ожидает активности? - PullRequest
0 голосов
/ 24 июня 2010

У меня есть несколько вопросов по поводу Android UI API.

Приведите пример, который я хочу реализовать.

Main_UI_Thread.java:

public class Main_UI_Thread extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        /*** do something about layout ***/
        ...

        DisplayClass dc = new DisplayClass();
        Thread th = new Thread(dc);
        th.start();
    }
}

DisplayClass.java:

public class DisplayClass extends Thread{
    @Override
    public void run() {
        if( something happen ) {
             to display Dialog or Toast show
             and handle the ui listener
        }
    }
}

Я знаю, что передача сообщений может сделать это;

Но я хочу, чтобы программа была реализована в DisplayClass.java

Возможно ли это?

Мой английский не очень хорошо. ^^ "

Спасибо всем за предложения. : P

1 Ответ

0 голосов
/ 24 июня 2010

Вашему DisplayClass, вероятно, потребуется ссылка на ваш экземпляр Activity, и измените пользовательский интерфейс, вызвав методы Activity (или методы изменения пользовательского интерфейса, которые принимают экземпляр Activity в качестве аргумента).

Кроме того, не забывайте всегда использовать метод runOnUiThread для выполнения действий по изменению пользовательского интерфейса из ваших "собственных" потоков.

Нет необходимости расширять DisplayClass Thread, еслиВы делаете new Thread(dc);.Реализация Runnable достаточно хороша.

public class DisplayClass extends Runnable {
    private Activity activity;
    public DisplayClass(Activity activity) {
        this.activity = activity;
    }
    @Override
    public void run() {
        if (something happen) {
            activity.runOnUiThread(new Runnable() {
                public void run() {
                    Toast.makeText(activity, "Hello", Toast.LENGTH_SHORT).show();
                }
            });
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...