public String newUser = "false";
public double lat = 0.0, lon = 0.0;
У меня есть следующие функции в моем андроида приложения (вызывается при нажатии кнопки), которая начинается поток:резьбы не правильно завершение, я думаю
public void SignUpFunction(View view) {
assignValues();
String filledAll = checkIfFilled();
if (filledAll.equals("true")) {
Log.d("LIFECYCLE", "calling thread..");
//my thread
new validateThread().start();
Log.d("After thread start","This log call does not occur");
if (newUser.equals("true")) {
Toast.makeText(this, "Please wait as we obtain your location", Toast.LENGTH_SHORT).show();
getMyLocationFunction();
} else {
return;
}
}
}
validateThread:
class validateThread extends Thread {
public void run() {
Log.d("LIFECYCLE", "validateThread entered...");
try {
newUser = "true";
Log.d("validateThread", "Validated and found new user");
} catch (Exception e) {
Log.d("validateThread", "Exception in validateThread: " + e.getMessage());
}
}
}
Поток работает правильно ... но после последней строки он не возвращается к начальной точке. Я не понимаю, почему это происходит, потому что я использовал потоки раньше, и все они работают правильно.
Я знаю, что могу просто дать функцию getMyLocation внутри потока, но мне это действительно нужно.
Я искал похожие вопросы, но никто не помог .. Что я здесь делаю неправильно? Спасибо заранее.
Что вы подразумеваете под словом «он не возвращается к своей точке начала»? вы ожидаете 'if (newUser.equals (" true "))' 'быть' true', потому что вы устанавливаете его как таковой в потоке? – takecare
Резьбы параллельны друг другу. Вы можете переключатель 'если (newUser.equals ("истина"))' к 'делать { ... } в то время как (! NewUser.equals ("истина"))' –
На самом деле я не разместил здесь весь контент. Независимо от того, какое заявление я даю там (даже оператор «Log» вместо «if») не выполняется. – aashima