私のアンドロイドアプリケーションには2つのアクティビティがあります。メインアクティビティのクリックボタンを押して2番目のアクティビティに移動し、次のスレッド関数を使用して値を返します。私はバックボタンを押すとスレッドを止めたい。 2回目のアクティビティでクリック時のボタンを押したときに表示されます。私はアンドロイドに新しい人を助けてください。戻るボタンを押してボタンをクリックするとスレッドを止めたい(Androidスタジオ)
私のスレッド関数
void beginListenForData()
{
final Handler handler = new Handler();
stopThread = false;
buffer = new byte[1024];
Thread thread = new Thread(new Runnable()
{
public void run()
{
while(!Thread.currentThread().isInterrupted() && !stopThread)
{
try
{
int byteCount = inputStream1.available();
if(byteCount > 0)
{
byte[] rawBytes = new byte[byteCount];
inputStream1.read(rawBytes);
final String string=new String(rawBytes,"UTF-8");
handler.post(new Runnable() {
public void run()
{
recDataString.append(string); //keep appending to string until ~
//keep appending to string until ~
int endOfLineIndex = recDataString.indexOf("~"); // determine the end-of-line
if (endOfLineIndex > 0) { // make sure there data before ~
// String dataInPrint = string.substring(0, endOfLineIndex); // extract string
if (recDataString.charAt(0) == '#') //if it starts with # we know it is what we are looking for
{
String sensor0 = recDataString.substring(1, 4); //get sensor value from string between indices 1-5
String sensor1 = recDataString.substring(5,9); //same again...
stringToFloat1 = Float.parseFloat(sensor0);
stringToFloat2 = Float.parseFloat(sensor1);
floatToInt1 = (int)stringToFloat1 ;
floatToInt2 = (int)stringToFloat2;
if ((floatToInt1 != lastFloatToInt1) ||(floatToInt2 != lastFloatToInt2)){
Log.d("hell=" , "ohhhhhhhhhhhhhhhh");
movieMethod();
}
lastFloatToInt1 = floatToInt1 ;
lastFloatToInt2 = floatToInt2 ;
}
recDataString.delete(0, recDataString.length()); //clear all string data
}
}
});
}
}
catch (IOException ex)
{
stopThread = true;
}
}
}
});
thread.start();
}
オーバーライド '()スレッドが –