我创建了一个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函数也会执行。请帮忙
答案 0 :(得分:0)
在onPostExecute()
中的任务完成后,doInBackground()
方法会被触发。在您的示例中,您没有在doInBackground()
中执行任何任务,导致立即调用onPostExecute()
。将您的方法pairDevice(BluetoothDevice device)
移到doInBackground()
方法中,它应该有效。