ジェイ...あなたは、スレッドと手を使用したい場合Lers。時間のかかるタスクを実行可能なメソッドに配置します。実行可能オブジェクトを「含む」スレッドを作成し、スレッド開始を呼び出して、時間のかかるタスクが別のスレッドで実行されるようにします。 UIスレッドでダイアログを起動できるはずです。バックグラウンドスレッドが完了してハンドラに通知すると、UIスレッドにバインドされているハンドラ内のダイアログを閉じることができます。ここでスレッドを使用していくつかのコードです。このスニペットは、新しいスレッドで時間のかかるプロセスを起動します。
buttonConfuseText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final String inString= editTextPlainText.getText().toString();
Thread thread= new Thread(new Runnable() {
public void run() {
String outString= encrypt(password,inString); //<== time intensive task here
Message msg= Message.obtain();
Bundle b= new Bundle();
b.putString("encryptedText",outString);
msg.setData(b);
handler.sendMessage(msg);
Log.d(TAG,outString);
}
});
thread.setDaemon(true);
thread.start();
}
});
現在地が完了するスレッドを待つ:
public class ConfuseText extends Activity {
private Handler handler= new Handler(){
@Override
public void handleMessage(Message msg){
super.handleMessage(msg);
ConfuseText.this.onThreadMessage(msg); //<== close dialog here if you wish
}
};
public void onThreadMessage(Message msg){
Bundle b= msg.getData();
String encryptedText="";
if (b != null){
encryptedText= b.getString("encryptedText");
}
Log.d(TAG,encryptedText);
}
出典
2011-02-25 23:00:32
JAL