Задать вопрос
@math_man

Не срабатывает поток?

В методе:
public void getSMSToSend()  {
        while(flag){
            String sql = "http://80.252.241.43/telephony/android/get_sms.php?login=" + Account.login + "&password=" + Account.password;
            String text;
            synchronized (this){
                MyThread mt = new MyThread(sql);
                mt.start();
                text = mt.returnResponce();
                mt = null;
            }


            System.out.println("TEXT = " + text);
            //String text = request(sql);
            if(!text.equals("||")){
                String phone = text.substring(0, text.indexOf("|"));
                phoneNo = phone;
                text = text.substring(text.indexOf("|")+1);
                String sms = text.substring(0, text.indexOf("|"));
                message = sms;
                String idd = text.substring(text.indexOf("|")+1);
                id=idd;
                System.out.println("ID="+id);

                if(!idd.equals("")&&!sms.equals("")&&!phone.equals("")) {
                    sendSMS();
                }
            }
        }

я создаю поток MyThread:
MyThread mt = new MyThread(sql);
                mt.start();
                text = mt.returnResponce();
                mt = null;


Сам класс MyThread:
public class MyThread extends Thread {
    private Thread temp;
    private String responce;
    private boolean flag;
    MyThread(final String sql){
        flag = true;
        temp = new Thread(new Runnable() {
            @Override
            public synchronized void run() {
                    try {
                        OkHttpClient client = new OkHttpClient();
                        Request request = new Request.Builder().url(sql).build();
                        Response response = client.newCall(request).execute();
                        responce = response.body().string();
                        System.out.println("RESPONCE = " + responce);

                    } catch (IOException e) {
                        e.printStackTrace();
                    }
            }
        });
        temp.start();
    }

    public synchronized String returnResponce() {
        return responce;
    }

    @Override
    public synchronized void start() {
        super.start();
    }
}


Метод returnResponce() возвращает всегда null, а должен там как минимум номер телефона. Подскажите пожалуйста в чем может быть проблема?
  • Вопрос задан
  • 116 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
@onepavel
Консультация и разработка мобильных приложений
проблема в том, что returnResponce вызывается быстрее, чем отрабатывает поток
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы