Android 在';n';秒不';有时我不工作

Android 在';n';秒不';有时我不工作,android,Android,我创建了一个应用程序,它基本上是一个调用whitelister!我还实现了一个功能,用户可以为每个添加的号码设置以分钟为单位的时间,以便在为该指定号码分配“n”分钟后断开呼叫。一切都发生在服务中!呼叫白名单工作完美,只有添加到我的应用程序中的号码才能连接,其他所有号码都将断开连接! 但我面临的问题是n分钟后的断开连接。 我的逻辑代码如下 if (calltype.equals("INCOMING") || calltype.equals("OUTGOING")) { //Gett

我创建了一个应用程序,它基本上是一个调用whitelister!我还实现了一个功能,用户可以为每个添加的号码设置以分钟为单位的时间,以便在为该指定号码分配“n”分钟后断开呼叫。一切都发生在服务中!呼叫白名单工作完美,只有添加到我的应用程序中的号码才能连接,其他所有号码都将断开连接! 但我面临的问题是n分钟后的断开连接。 我的逻辑代码如下

if (calltype.equals("INCOMING") || calltype.equals("OUTGOING")) {
        //Getting the alloted time in minutes from database fro the dialed number!
        int userTime = Integer.parseInt(whiteListDao.getLimit(number));
        //checking is number is greater that 0. if less than 0 call will disconnected instantly!
        if (userTime > 0) {
            final int milli = userTime * 1000;
            int tickTime = 1000;
            final String finalNumber = number;
            handler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    disconnectPhoneItelephony(context);
                    updateMyDB(finalNumber);
                }
            }, milli);
        } else {
            disconnectPhoneItelephony(context);
        }
    } else {
        try {
            handler.removeCallbacksAndMessages(null);
        } catch (Exception e) {

        }
    }

但是,如果时间少于5分钟,这是有效的!但是,当增加10分钟或更高,这将不会在许多情况下工作!这是为什么!!请帮我解决这个问题

你也可以使用倒计时来达到同样的目的,这对所有Android版本都非常有效

 private CountDownTimer countDownTimer;


        if(calltype.equals("INCOMING")||calltype.equals("OUTGOING"))

        {
            //Getting the alloted time in minutes from database fro the dialed number!
            int userTime = Integer.parseInt(whiteListDao.getLimit(number));
            //checking is number is greater that 0. if less than 0 call will disconnected instantly!
            if (userTime > 0) {
                final int milli = userTime * 1000;
                int tickTime = 1000;
                countDownTimer = new CountDownTimer(milli, tickTime) {
                    @Override
                    public void onTick(long millisUntilFinished) {
                        // timer is running
                    }

                    @Override
                    public void onFinish() {

                        // time is over
                        disconnectPhoneItelephony(context);
                        updateMyDB(finalNumber);
                    }
                }.start();
            } else {
                disconnectPhoneItelephony(context);
            }
        }


@Override
    public void onDestroy() {
        super.onDestroy();

        if (countDownTimer != null) {
           countDownTimer.cancel();
        }
    }

我试过了!!但这也有同样的问题!!:(你确定吗?因为我在我的应用程序中也使用了相同的20分钟的时间表,而且效果非常好。哦..这在我这边起作用了!!但客户总是说,当学生打电话时,他/她需要断开连接,而不是在10分钟后自动断开连接!!你确定你在服务中运行了吗!我的应用程序不会在foregroundYupp中,我是在服务中使用和应用程序在后台我认为服务在某些情况下会停止!使用AlarmManager@ישואכאךךך。您能发布一个示例代码吗?您可以在