@vendor ваш код работает, но вы выполняете операции пользовательского интерфейса из фонового потока, что может вызвать исключение. Я пытался настроить ваш код (я разместил его в исходном вопросе), чтобы сделать его безопасным для работы с потоками, но по какой-то причине тост не представлен - вы знаете, почему?
я есть приемник вещания, который прослушивает входящие звонки. И я хочу настроить экран входящего вызова. Прямо сейчас я могу представить тосты и добавить уведомления на панель уведомлений (кстати, пользователь не может опустить его, потому что экран заблокирован, прежде чем принять вызов, что вроде отстой). Я пытался показать оповещение, но оно вылетело - это не разрешено? Есть ли способ для кода в приемнике вещания делать другие вещи, такие как изменение аватара вызывающего абонента или присвоение ему имени (даже если его нет в контактах). Скажем так, мой приемник вещания перехватывает вызов - может ли он добавить номер телефона и пользовательский аватар в контакты, чтобы они сразу же отображались на экране вызова?
Как вы думаете?
редактировать
Я протестировал код вендора, и он работал, но менять интерфейс из фонового потока небезопасно, поэтому я попытался немного настроить его код, чтобы сделать его безопасным, но тост не появляется по какой-то причине. Как вы думаете?
private Handler handler = new Handler();
private void showToast() {
Thread thread = new Thread(null, doBackgroundThreadProcessing, "Background");
thread.start();
}
private Runnable doBackgroundThreadProcessing = new Runnable() {
public void run() {
backgroundThreadProcessing();
}
};
private void backgroundThreadProcessing() {
handler.post(new Runnable() {
public void run() {
int count = 0;
try{
while (count < 10) {
toast.show();
Thread.sleep(1850);
count++;
}
}
catch(Exception e){
Log.e("LongToast", "", e);
}
}
});
}