Я совершенно новичок в приложении Java и Android.
Мне нужно изменить эту функцию, чтобы код внутри цикла запускал синхронный. < /p>
public synchronized void testListwrite() {
//progressDialog = new CustomProgressDialog(mActivity, MSG_WRITE);
//progressDialog.show();
if (mConnectedReader == null || !mConnectedReader.isConnected()) {
Toast.makeText(mActivity.getApplicationContext(), "No Active Connection with Reader", Toast.LENGTH_SHORT).show();
//progressDialog.dismiss();
}
Fragment fragment = mActivity.getCurrentFragment(RFID_TAB);
//Integer counter = 1
for (Map.Entry < String, Integer > entry: Application.inventoryList.entrySet()) {
free = 0;
System.out.println("Key: " + entry.getKey() + ". Value: " + entry.getValue());
//accessOperationsWrite
final String tagValue = entry.getKey();
final String accessRWpassword = "00";
final String accessRWData = "12345678";
final String offsetText = "0";
final String lengthText = "2";
final String bankItem = "KILL PASSWORD";
final Integer pos = entry.getValue();
RFIDController.getInstance().accessOperationsWrite(tagValue, offsetText, lengthText, accessRWData, accessRWpassword, bankItem, new RfidListeners() {@Override
public void onSuccess(Object object) {
//progressDialog.dismiss();
startbeepingTimer();
Toast.makeText(mActivity.getApplicationContext(), mActivity.getString(R.string.msg_write_succeed), Toast.LENGTH_SHORT).show();
@Override
public void onFailure(Exception exception) {
//progressDialog.dismiss();
if (exception instanceof InvalidUsageException) {
sendNotification(Constants.ACTION_READER_STATUS_OBTAINED, ((InvalidUsageException) exception).getInfo());
} else if (exception instanceof OperationFailureException) {
sendNotification(Constants.ACTION_READER_STATUS_OBTAINED, ((OperationFailureException) exception).getResults().toString());
}
}
@Override
public void onFailure(String message) {
//progressDialog.dismiss();
Toast.makeText(mActivity.getApplicationContext(), message, Toast.LENGTH_SHORT).show();
}
});
}
}
< /code>
Я попытался положить цикл ожидания, но он блокируется, возможно, приостановленная поток - это то же самое, запуская функцию CALL. < /p>
public synchronized void withPause() {
//progressDialog = new CustomProgressDialog(mActivity, MSG_WRITE);
//progressDialog.show();
if (mConnectedReader == null || !mConnectedReader.isConnected()) {
Toast.makeText(mActivity.getApplicationContext(), "No Active Connection with Reader", Toast.LENGTH_SHORT).show();
//progressDialog.dismiss();
}
Fragment fragment = mActivity.getCurrentFragment(RFID_TAB);
//Integer counter = 1
for (Map.Entry < String, Integer > entry: Application.inventoryList.entrySet()) {
free = 0;
System.out.println("Key: " + entry.getKey() + ". Value: " + entry.getValue());
//accessOperationsWrite
final String tagValue = entry.getKey();
final String accessRWpassword = "00";
final String accessRWData = "12345678";
final String offsetText = "0";
final String lengthText = "2";
final String bankItem = "KILL PASSWORD";
final Integer pos = entry.getValue();
RFIDController.getInstance().accessOperationsWrite(tagValue, offsetText, lengthText, accessRWData, accessRWpassword, bankItem, new RfidListeners() {@Override
public void onSuccess(Object object) {
//progressDialog.dismiss();
startbeepingTimer();
Toast.makeText(mActivity.getApplicationContext(), mActivity.getString(R.string.msg_write_succeed), Toast.LENGTH_SHORT).show();
@Override
public void onFailure(String message) {
//progressDialog.dismiss();
free = 1;
Toast.makeText(mActivity.getApplicationContext(), message, Toast.LENGTH_SHORT).show();
}
});
//
}
@Override
public void onFailure(Exception exception) {
//progressDialog.dismiss();
free = 1;
if (exception instanceof InvalidUsageException) {
sendNotification(Constants.ACTION_READER_STATUS_OBTAINED, ((InvalidUsageException) exception).getInfo());
} else if (exception instanceof OperationFailureException) {
sendNotification(Constants.ACTION_READER_STATUS_OBTAINED, ((OperationFailureException) exception).getResults().toString());
}
}
@Override
public void onFailure(String message) {
//progressDialog.dismiss();
free = 1;
Toast.makeText(mActivity.getApplicationContext(), message, Toast.LENGTH_SHORT).show();
}
});
SleepTimeout = 0;
while ((free == 0) || (SleepTimeout < 4000)) {
try {
Thread.sleep(10);
SleepTimeout++;
} catch(InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}
}
< /code>
есть у кого -нибудь предложение решить проблему?
Большое спасибо. < /p>
Подробнее здесь: https://stackoverflow.com/questions/795 ... va-android
Запуск функций Async в синхронном режиме (Java - Android) ⇐ Android
Форум для тех, кто программирует под Android
-
Anonymous
1741801930
Anonymous
Я совершенно новичок в приложении Java и Android.
Мне нужно изменить эту функцию, чтобы код внутри цикла запускал синхронный. < /p>
public synchronized void testListwrite() {
//progressDialog = new CustomProgressDialog(mActivity, MSG_WRITE);
//progressDialog.show();
if (mConnectedReader == null || !mConnectedReader.isConnected()) {
Toast.makeText(mActivity.getApplicationContext(), "No Active Connection with Reader", Toast.LENGTH_SHORT).show();
//progressDialog.dismiss();
}
Fragment fragment = mActivity.getCurrentFragment(RFID_TAB);
//Integer counter = 1
for (Map.Entry < String, Integer > entry: Application.inventoryList.entrySet()) {
free = 0;
System.out.println("Key: " + entry.getKey() + ". Value: " + entry.getValue());
//accessOperationsWrite
final String tagValue = entry.getKey();
final String accessRWpassword = "00";
final String accessRWData = "12345678";
final String offsetText = "0";
final String lengthText = "2";
final String bankItem = "KILL PASSWORD";
final Integer pos = entry.getValue();
RFIDController.getInstance().accessOperationsWrite(tagValue, offsetText, lengthText, accessRWData, accessRWpassword, bankItem, new RfidListeners() {@Override
public void onSuccess(Object object) {
//progressDialog.dismiss();
startbeepingTimer();
Toast.makeText(mActivity.getApplicationContext(), mActivity.getString(R.string.msg_write_succeed), Toast.LENGTH_SHORT).show();
@Override
public void onFailure(Exception exception) {
//progressDialog.dismiss();
if (exception instanceof InvalidUsageException) {
sendNotification(Constants.ACTION_READER_STATUS_OBTAINED, ((InvalidUsageException) exception).getInfo());
} else if (exception instanceof OperationFailureException) {
sendNotification(Constants.ACTION_READER_STATUS_OBTAINED, ((OperationFailureException) exception).getResults().toString());
}
}
@Override
public void onFailure(String message) {
//progressDialog.dismiss();
Toast.makeText(mActivity.getApplicationContext(), message, Toast.LENGTH_SHORT).show();
}
});
}
}
< /code>
Я попытался положить цикл ожидания, но он блокируется, возможно, приостановленная поток - это то же самое, запуская функцию CALL. < /p>
public synchronized void withPause() {
//progressDialog = new CustomProgressDialog(mActivity, MSG_WRITE);
//progressDialog.show();
if (mConnectedReader == null || !mConnectedReader.isConnected()) {
Toast.makeText(mActivity.getApplicationContext(), "No Active Connection with Reader", Toast.LENGTH_SHORT).show();
//progressDialog.dismiss();
}
Fragment fragment = mActivity.getCurrentFragment(RFID_TAB);
//Integer counter = 1
for (Map.Entry < String, Integer > entry: Application.inventoryList.entrySet()) {
free = 0;
System.out.println("Key: " + entry.getKey() + ". Value: " + entry.getValue());
//accessOperationsWrite
final String tagValue = entry.getKey();
final String accessRWpassword = "00";
final String accessRWData = "12345678";
final String offsetText = "0";
final String lengthText = "2";
final String bankItem = "KILL PASSWORD";
final Integer pos = entry.getValue();
RFIDController.getInstance().accessOperationsWrite(tagValue, offsetText, lengthText, accessRWData, accessRWpassword, bankItem, new RfidListeners() {@Override
public void onSuccess(Object object) {
//progressDialog.dismiss();
startbeepingTimer();
Toast.makeText(mActivity.getApplicationContext(), mActivity.getString(R.string.msg_write_succeed), Toast.LENGTH_SHORT).show();
@Override
public void onFailure(String message) {
//progressDialog.dismiss();
free = 1;
Toast.makeText(mActivity.getApplicationContext(), message, Toast.LENGTH_SHORT).show();
}
});
//
}
@Override
public void onFailure(Exception exception) {
//progressDialog.dismiss();
free = 1;
if (exception instanceof InvalidUsageException) {
sendNotification(Constants.ACTION_READER_STATUS_OBTAINED, ((InvalidUsageException) exception).getInfo());
} else if (exception instanceof OperationFailureException) {
sendNotification(Constants.ACTION_READER_STATUS_OBTAINED, ((OperationFailureException) exception).getResults().toString());
}
}
@Override
public void onFailure(String message) {
//progressDialog.dismiss();
free = 1;
Toast.makeText(mActivity.getApplicationContext(), message, Toast.LENGTH_SHORT).show();
}
});
SleepTimeout = 0;
while ((free == 0) || (SleepTimeout < 4000)) {
try {
Thread.sleep(10);
SleepTimeout++;
} catch(InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}
}
< /code>
есть у кого -нибудь предложение решить проблему?
Большое спасибо. < /p>
Подробнее здесь: [url]https://stackoverflow.com/questions/79504124/running-for-loop-async-functions-in-synchronous-mode-java-android[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия