处理程序不调用
Handler not invoking
我正在从我的 app.Which 进行验证呼叫应该在配置的 5-10 秒后断开连接。
这是我的代码;
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:" + phoneNumber));
callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
handler.postDelayed(new Runnable() {
@Override
public void run() {
/*It is never called up untill call got disconnected/hanged up. */
Log.d(TAG, "Disconnecting :");
disconnectCall();
}
}, 5000);
startActivity(callIntent);
问题是 disconnectCall() 方法在 callIntent activity 暂停之前未被调用,即用户强行断开连接 call/hanged。我需要在调用期间多次调用 disconnectCall() activity.Not 获取代码中的问题所在。
您正在调用 startActivity(callIntent)。
这意味着您正在 将控制权转移给调用方应用程序 android。 android 呼叫者应用程序现在可以在用户需要时断开呼叫。
从我的角度来看,问题出在单线程 android 服务 class 上,它不会调用处理程序或任何方法,直到之前的 activity get over.So i在处理程序 runnable 中添加了一段代码,它开始工作了。
handler.post(callTestHandler = new Runnable() {
@Override
public void run() {
try {
//Intent callIntent = new Intent("android.intent.action.NEW_OUTGOING_CALL");
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:" + phoneNumber));
callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
handler.postDelayed(new Runnable() {
@Override
public void run() {
Log.d(TAG, "Disconnecting :");
disconnectCall();
}
}, 5000);
startActivity(callIntent);
} catch (Exception e) {
e.getMessage();
}
}
});
如果有人有不同answer/solution请post。
正如 daniel 提到的,一旦您开始调用 activity,您就不再处于控制之中,当您的 activity 重新回到前台时,您的应用程序主线程将只获得 CPU 时间。
挂断使用this.
我正在从我的 app.Which 进行验证呼叫应该在配置的 5-10 秒后断开连接。
这是我的代码;
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:" + phoneNumber));
callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
handler.postDelayed(new Runnable() {
@Override
public void run() {
/*It is never called up untill call got disconnected/hanged up. */
Log.d(TAG, "Disconnecting :");
disconnectCall();
}
}, 5000);
startActivity(callIntent);
问题是 disconnectCall() 方法在 callIntent activity 暂停之前未被调用,即用户强行断开连接 call/hanged。我需要在调用期间多次调用 disconnectCall() activity.Not 获取代码中的问题所在。
您正在调用 startActivity(callIntent)。 这意味着您正在 将控制权转移给调用方应用程序 android。 android 呼叫者应用程序现在可以在用户需要时断开呼叫。
从我的角度来看,问题出在单线程 android 服务 class 上,它不会调用处理程序或任何方法,直到之前的 activity get over.So i在处理程序 runnable 中添加了一段代码,它开始工作了。
handler.post(callTestHandler = new Runnable() {
@Override
public void run() {
try {
//Intent callIntent = new Intent("android.intent.action.NEW_OUTGOING_CALL");
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:" + phoneNumber));
callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
handler.postDelayed(new Runnable() {
@Override
public void run() {
Log.d(TAG, "Disconnecting :");
disconnectCall();
}
}, 5000);
startActivity(callIntent);
} catch (Exception e) {
e.getMessage();
}
}
});
如果有人有不同answer/solution请post。
正如 daniel 提到的,一旦您开始调用 activity,您就不再处于控制之中,当您的 activity 重新回到前台时,您的应用程序主线程将只获得 CPU 时间。
挂断使用this.