2011-07-27 53 views
0

我尝试使用进度对话框。我的代码:Android进度对话框问题

//方法加载数据线BT

private void dataload() { 
    if(D) Log.e(TAG, "++ Data Load Function ++"); 

    // make discoverable 
    Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE); 
    discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300); 
    startActivity(discoverableIntent); 

    //Show Progress Dialog 
    ProgressDialog dialog = ProgressDialog.show(BluetoothServer.this, "", "Loading, Please wait...", true); 

    //Establish server connection 
    mAcceptThread = new AcceptThread(); 
    mAcceptThread.run(); 

    //End progress dialog 
    dialog.dismiss(); 

    //mAcceptThread.cancel(); 
} 

那主要活动里面,AcceptThread是在同一个班,而是延伸线程作为一个新的类。问题是,没有进度条出现。

问题在哪里,我必须将AcceptThread放在另一个Activity中吗?

另一个问题是,如果调用AcceptThread,我得到一个ANR。我应该是一个问题,它不是在后台运行,但为什么?

希望你能帮上忙。

+0

dataload()是线程类或活动的一部分吗? – Reno

+0

其活动的一部分,线程类也是活动的一部分。 – fluxim

+0

它的成员函数是什么?如果你得到ANR。 **总是**在这里发布Logcat痕迹。 – Reno

回答

1

启动一个线程,调用start()方法,不run(),因为run()会调用该方法在当前线程上,而start()将创建一个新的线程,并在它调用run方法。但看着你的代码,似乎你需要使用AsyncTask

+0

我使用了AcceptThread extends Thread并覆盖了run方法。所以我认为这应该工作。它的运行,但不在后台。开始运行之间的区别在哪里? – fluxim

+1

我刚刚写到... – MByD

+0

确定进度条显示出来。但是你是对的,我必须使用像AsyncTask这样的东西,因为如果我在线程开始调用之后调用解除,它将关闭进度条并且线程正在运行!我需要让他们沟通! – fluxim