я получил FixedSizeThreadPool с 1 Тема (потому что я только нужно одно и каждый следующий запрос должен ждать, пока ранее запрос был завершен):Seperate Thread, который вызывает метод, который runsOnUiThread
myService = Executors.newFixedThreadPool(1);
myService.execute(new WorkerRunnable());
В моей WorkerRunnable я делать некоторые вещи и в середине я вызвать метод из моей деятельности:
myActivity.thisMethodRunsOnUiThread();
метод выглядит следующим образом:
public void thisMethodRunsOnUiThread() {
runOnUiThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
I'm trying to Change a View here, that's why i Need to do this on Ui Thread
}
});
}
И после этого на WorkerRunnable Наступает мой последний метод, который должен снова запустить на seperateThread из fixedSizePool
myActivity.thisMethodsRunsonUiThread();
thisMethodRunsAgainOnTheSeperateThread();
Но что я упомянул здесь является то, что он только вызывает метод, который должен RunOnUiThread после MethodWhichShouldRunOnSeperateThread. (Который является последним методом, поэтому мой поток будет завершен в это время). Может ли быть так, что seperateThread получил более высокий приоритет, чем MainThread, так что он ждет, пока seperateThread не будет закончен, а затем он начнет метод, который запускается на UiThread?
мне нужно закончить метод
myActivity.thisMethodsRunsonUiThread();
перед этим методом
thisMethodRunsAgainOnTheSeperateThread();
Может кто-нибудь объяснить, почему он действует, как это? Любая помощь приветствуется.
Можете ли вы предоставить код для лучшего понимания? Потому что вы сказали, что runnable должен подождать некоторое время для выполнения. В этом случае это не так. Я также объявлял статическую логическую переменную, которая переключается в true, если метод UIThread завершен. И я упаковал метод на отдельном потоке через Loop и спросил, установлено ли логическое значение true. Но while-Loop работает бесконечно, UIMethod никогда не вызывается, потому что seperateThread никогда не заканчивается. Надеюсь, вы понимаете. Может быть, я пропущу что-то ... – MMike
Можете ли вы предоставить свой код :), вы не упомянули о своем статическом булевом флагове, и странно, что метод, который вы опубликовали onUIThread, не выполняется. – debi
Не ошибитесь, я не хочу публиковать свой код. Кроме того, это перегрузило бы вопрос. Я думал, что лучший способ описать проблему - это то, как я сделал это выше. Я думаю, что это не странно, должно быть логическое решение. Да, я подумал, что сейчас подходящее время для этого Информация. Любые другие предложения? Понравилось бы, что – MMike