Я пытаюсь найти способ автоматизировать выполнение AsyncTask, в настоящее время он работает от нажатия кнопки.Выполнение AsyncTask из класса приложения
Чтобы дать некоторый контекст -
Класс Application
// The Handler that gets information back from the BluetoothService
public final Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case MESSAGE_READ:
Log.d(TAG, "MESSAGE_READ");
byte[] readBuf = (byte[]) msg.obj;
readMessage = new String(readBuf);
break;
}
}
};
активность - AsyncTask Подкласс
private class PostTask extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
readBuf = ((MyApplication) getApplication()).getReadBuf();
speedcur1 = speedometer.getCurrentSpeed();
speedcur2 = speedometer1.getCurrentSpeed();
}
@Override
protected Void doInBackground(Void... params) {
if (readBuf.startsWith("V")) {
readBuf = readBuf.replace("V", "");
String[] parts = readBuf.split(",");
String part1 = parts[0];
String part2 = parts[1];
speed1 = Float.parseFloat(part1);
speed2 = Float.parseFloat(part2);
finalspeed1 = ((speed1 * 102)/100);
finalspeed2 = ((speed2 * 602)/100);
}
return null;
}
@Override
protected void onProgressUpdate(Void... values) {
super.onProgressUpdate(values);
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
speedometer.onSpeedChanged(speedometer.getCurrentSpeed() - speedcur1);
speedometer.onSpeedChanged(speedometer.getCurrentSpeed() + finalspeed1);
speedometer1.onSpeedChanged(speedometer1.getCurrentSpeed() - speedcur2);
speedometer1.onSpeedChanged(speedometer1.getCurrentSpeed() + finalspeed2);
myLabel.setText(readBuf);
}
}
я продлил свой класс приложений, в этом классе является обработчиком который считывает сообщения, отправленные с моей службы, msg.arg1
считывается внутри этого обработчика и выбирает соответствующий регистр.
В моем случае message_read msg.obj
сохраняется как байт [], а затем сохраняется как строка.
Моя нынешняя идея - каким-то образом выполнить AsynTask внутри моей активности из обработчика класса приложения после проверки того, выполняется ли текущая активность. Первоначально у меня была эта функциональность, работающая внутри цикла, но после внесения огромных изменений в мое приложение требования изменились, поскольку служба соединения Bluetooth разделена между двумя действиями.
Было бы лучше, чтобы положить немного кода, так что мы можем помочь вам –
сделать, оставил некоторые из несвойственных кода, особенно в обработчике – sab215