Я новичок в android.I потратил слишком много времени на решение этой проблемы без успеха.Невозможно получить доступ к переменным из Async Task
У меня есть сервис Serv.java
.
public class Serv extends Service {
private String a = "aa";
private String b = "bb";
private String c = "100";
//called by some class.
public void setcc(String s) {
c=s;//c="cc"
}
//Using alarm manager to start the service.
//I call function callMe from OnStart.
void callMe(Context context){
//which calls an async task
new VAsyncTask().execute("");
}
private class VerifyCPIAsyncTask extends AsyncTask<String, Void, Void> {
protected void onPreExecute() {
}
protected Void doInBackground(String... urls) {
//I am able to access a and b.(aa and bb)
//but not c.(It still shows 100 and not cc)
}
........
}
Но когда я снова запустить ту же услугу он показывает правильное значение с (см) .Есть проблема, когда я доступ в первый раз.
EDIT- поток работает отлично, если я делаю частную строку c частным статическим строком c. И я поместил журналы в свои onCreate и onStartCommand. Они не печатают последнее значение переменной c.so нет необходимости использовать последнюю (переменную) переменную c для создания или создания конструктора в aysnctask (потому что я все еще получаю старое значение переменной с).
Пожалуйста, помогите. Спасибо.
Почему вы не можете установить параметры, которые когда-либо хотите, используя метод 'Preexecute' в' Asynctask'? – jgm
Не зная процесса немного больше и понимая, как вы используете все, что я могу предположить, это состояние гонки или что-то в этом роде. – zgc7009
Привет, пожалуйста, посмотрите на это [link] (https://stackoverflow.com/questions/36689841/cannot-access-values-first-time) –