Я разрабатываю приложение для Android Bluetooth и использую aSyncTask, когда хочу сканировать доступное устройство вокруг моего.Это aSyncTask
просто: в "onPreExecute()"
я использую "myBluteoothAdaptaer.startDiscovery()"
для обнаружения устройств и "myBluteoothAdaptaer.cancelDiscovery()"
в "onPostExecute()"
для его остановки.
Но когда я запускаю свое приложение, функция doInBackground()
выполняется только один раз по первому клику.Если я снова нажимаю на кнопку, код Button работает, но aSyncTask не выполняется должным образом (когда он работает, для выполнения progressBar требуется 2 секунды. Когда он не работает, ему нужно только около 0.1 ms
для его завершения).
Так что, возможно, эта ошибка исходит от doInBackground()
, остановка на onPreExecute()
или что-то вроде этого?
Заранее спасибо за вашу помощь.
Вот код:
Код нажатия кнопки: (просто установите)
/** Scan on click **/
Scan_btn.setOnClickListener(new View.OnClickListener() { // click on SCAN button
@Override
public void onClick(View view) {
if (!blueAdapter.isDiscovering()) {
//blueAdapter.startDiscovery();
Scan_btn_clic = true;
} else {
//blueAdapter.cancelDiscovery();
Scan_btn_clic = false;
}
Maj scan = new Maj();
scan.execute();
}
});
/***********/
Функция doInBackground ():
@Override
protected Void doInBackground(Void... arg0) {
int progress;
for (progress=0;progress<=100;progress++)
{
if (blueAdapter.isEnabled() && Scan_btn_clic == false || !blueAdapter.isEnabled())
{
for (int i=0; i<5000000; i++){}
//la méthode publishProgress met à jour l'interface en invoquant la méthode onProgressUpdate
publishProgress(progress);
progress++;
}
else if (blueAdapter.isEnabled() && Scan_btn_clic == true)
{
for (int i = 0; i < 100000000; i++) {}
//la méthode publishProgress met à jour l'interface en invoquant la méthode onProgressUpdate
publishProgress(progress);
progress++;
}
}
return null;
}