Android Async无法正常工作

时间:2015-05-08 06:29:27

标签: android android-asynctask

我创建了一个AsyncTask。我想配对蓝牙设备,只有配对后才能进入下一个活动。我的代码是

public class YourTask extends AsyncTask<String, Void, Void>
{
    public BluetoothDevice d;
    @Override
    protected Void doInBackground(String... urls)
    {
        //pairDevice(d);
        return null;
    }
    public void onPreExecute()
    {
        pairDevice(d);
    }

    @Override
    protected void onPostExecute(Void result)
    {
        Context context = getApplicationContext();

        int duration = Toast.LENGTH_SHORT;
        CharSequence text = "Pairing";
        Toast toast = Toast.makeText(context, text, duration);
        toast.show();
        startActivity(new Intent(NewDeviceActivity.this,DevicesActivity.class));
        finish();
    }
}
 void pairDevice(BluetoothDevice device) {
    try {

        Method m = device.getClass()
                .getMethod("createBond", (Class[]) null);
        m.invoke(device, (Object[]) null);
    } catch (Exception e) {
        Log.e(TAG, e.getMessage());
    }

}

即使在pairDevice函数完成之前,onPostExecute函数也会执行。请帮忙

1 个答案:

答案 0 :(得分:0)

onPostExecute()中的任务完成后,doInBackground()方法会被触发。在您的示例中,您没有在doInBackground()中执行任何任务,导致立即调用onPostExecute()。将您的方法pairDevice(BluetoothDevice device)移到doInBackground()方法中,它应该有效。