UIスレッドがビューを更新できるように、スレーブスレッドからの変更イベントについてUIスレッドに通知したいと思います。私が試したスレーブ通知マスターにする方法?
//UI Thread
while(true){
synchronized(mutex)
{
try {
mutex.wait();
if(!flag){
adapter = new PlayListAdapter(this, R.layout.activity_row_item, data);
listView = (ListView)findViewById(R.id.playlist_listView);
listView.setAdapter(adapter);
flag=true;
} else {
adapter.clear();
adapter.addAll(data);
adapter.notifyDataSetChanged();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
:
public Class MainActivity extends Activity{
private final Object mutex = new Object();
private String[] data;
private boolean flag = false;
//UI Thread
synchronized(mutex)
{
try {
mutex.wait();
if(!flag){
adapter = new PlayListAdapter(this, R.layout.activity_row_item, data);
listView = (ListView)findViewById(R.id.playlist_listView);
listView.setAdapter(adapter);
flag=true;
} else {
adapter.clear();
adapter.addAll(data);
adapter.notifyDataSetChanged();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//Slave thread
While(true){
//Waiting for an event to occur in order to update data
//change data
synchronized(mutex){
mutex.notify();
}
}
}
しかし、その後、私は無限にUIスレッドループを作り、スレーブの通知を待つしようとしたとき、プログラムは動作しませんでした:まあのような一回の実行のために物事を行ってきました最初はスレーブスレッドからビューを変更し、これがアンドロイドで禁止されていることを発見したので、ハンドラスレッドを使用しようとしましたが、期待通りにうまくいきませんでした。