Очередь запускаемых программ для запуска в другом потоке Android - PullRequest
2 голосов
/ 18 июля 2011

этот код поможет мне объяснить мою проблему:

public class TestHandlerActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    new  Thread(){
        public void run(){
            for (int i=0;i<20;i++){
                handler.post(run);
            }
        }
    }.start();
}

Handler handler=new Handler(){

};

Runnable run = new Runnable(){
    public void run(){
        try {
            Thread.sleep(1500);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        Log.d("TAG", "Message processed");
    }
};
}

Таким образом, новый поток создает петиции, которые обрабатываются обработчиком в основном потоке.Что мне нужно сделать, это как раз наоборот.Поток пользовательского интерфейса запускает петиции, которые обслуживаются последовательно другим потоком (порядок важен), и потоку пользовательского интерфейса не нужно уведомлять о завершении каждого обращения.Для этого важны некоторые моменты: Петиции имеют 3 параметра (int, int, boolean), они вносят изменения в базу данных и генерируются в результате взаимодействия пользователя с пользовательским интерфейсом, поэтому они не запускаются одновременно. Заранее спасибо

1 Ответ

2 голосов
/ 18 июля 2011

Один из вариантов - использовать его для создания потока: http://developer.android.com/reference/android/os/HandlerThread.html

Это создаст поток с собственной очередью сообщений и циклом.Вы можете создать обработчик для запуска работы в потоке следующим образом:

HandlerThread handlerThread = new HandlerThread("My Handler");
handlerThread.start();
Handle myHandler = new Handler(handlerThread.getLooper());

Для этого требуется, чтобы вся работа, выполняемая потоком, выполнялась путем отправки сообщений и планирования Runnables на нем через обработчики.

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