ArrayList
を拡張するクラス内でを使用することは可能Thread
ですか? 動作していた Bluetooth シリアルから読み取るコードをいくつか書きましたが、ArrayList
読み取っているものを追跡するために を追加しました。ただし、 resultsNullPointException
にアクセスする任意の行にアクセスしています。私はそれがスレッドセーフではないことを知っています (それが何を意味するのか完全には理解していないかもしれません) ので、不可能なことをしようとしているのかもしれませんが、ArrayLists はそれ以外の場合は非常に簡単に操作できるので、専門家に確認すると思いました.ArrayList
private class ConnectedThread extends Thread {
private final BluetoothSocket mmSocket;
private final InputStream mmInStream;
private List<String> results;
public ConnectedThread(BluetoothSocket socket) {
Log.d(TAG, "create ConnectedThread");
mmSocket = socket;
InputStream tmpIn = null;
OutputStream tmpOut = null;
List<String> results = new ArrayList<String>();
// Get the BluetoothSocket input and output streams
try {
tmpIn = socket.getInputStream();
tmpOut = socket.getOutputStream();
} catch (IOException e) {
Log.e(TAG, "temp sockets not created", e);
}
mmInStream = tmpIn;
mmOutStream = tmpOut;
init();
}
private void init(){
code = new byte[16];
checksum = 0;
tempbyte = 0;
bytesread = -1;
if(!results.isEmpty()){
Log.i(TAG, "Already have found: " + results.size() + " things.");
}
}
public void run(){
//do things
}
}