我試圖找到一種方法來自動執行AsyncTask,目前它的工作方式是按下按鈕。從應用程序類執行活動的AsyncTask
給予一定的語境 -
應用類
// 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);
}
}
我已經延長我的應用程序類,這個類裏面的處理程序它會讀取我的服務發送的消息在此處理程序中讀取並選擇適當的大小寫。
在我的message_read情況下,msg.obj
保存爲byte [],然後保存爲String。
我目前的想法是在檢查是否有問題的活動正在運行後,以某種方式在應用程序類處理程序中執行我的活動中的AsynTask。最初我在循環內部使用了該功能,但是在對應用程序進行了大量更改之後,由於兩個活動之間共享藍牙連接服務,所以需求發生了變化。
倒不如放一點你的代碼,以便我們可以幫你 –
做過,留下了一些不相關的代碼,尤其是在處理程序 – sab215