1
以下是這種情況:我需要在ListActivity中運行一些冗長的非UI代碼,然後讓此ListActivity更新UI以包含此冗長方法(列表)的結果。我需要一個ProgressDialog運行,直到完成,這樣用戶纔有一些反饋。Android線程問題
下面的代碼:
public class SolutionListActivity extends ListActivity
{
private String[] solutions;
private String letters;
private ProgressDialog dialog;
private static Solver solver;
/** Called when the activity is first created.
* @param savedInstanceState
*/
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//Get the selected letters from LettersActivity
letters = getIntent().getStringExtra("letters");
dialog = ProgressDialog.show(this, "Please Wait...",
"Searching Words...", true);
new Thread()
{
@Override
public void run()
{
if (solver == null)
{
solver = new Solver(SolutionListActivity.this);
solver.readDictionary(0);
solver.readDictionary(1);
}
solutions = solver.solve(letters);
runOnUiThread(new Runnable()
{
@Override
public void run()
{
dialog.dismiss();
//Set up a UI List
setListAdapter(new ArrayAdapter<String>(SolutionListActivity.this, R.layout.list_item, solutions));
ListView lv = getListView();
lv.setTextFilterEnabled(true);
}
});
}
}.start();
問題是我的ProgressDialog
不會解僱我不能肯定是否UI使用它setListAdapter(new ArrayAdapter<String>(SolutionListActivity.this, R.layout.list_item, solutions));
任何意見前solutions = solver.solve(letters);
將完成你們會有幫助的。
謝謝你, Calum
嗯......其實我試過,這樣過,但我已經忘記了它,因爲現在的工作我一定是不使用它的權利。絕對年齡雖然...非常感謝。 – 2011-06-04 18:40:51