Android - 当片段运行时,哪种片段方法不断调用?

时间:2017-07-19 10:17:36

标签: android android-fragments

我想知道片段运行时哪个方法经常调用?是onResume()。我有一个条件(如果声明),我希望片段不断检查条件,如果它是真的,做我想做的以下任务。 例如:

     if (heartdata >= 100 || bloodata >= 120 || tempdata >= 100)
    {
       sendMessage();
    }

我应该把这个IF语句放在哪里,以便android片段/ app不断检查条件并调用sendMessage(); 我把代码放在onCreate()它没有工作我也把它放在onCreateView()但没有工作请告诉我在哪里放这个代码..

5 个答案:

答案 0 :(得分:0)

解决方案是使用TimerTask并使用Timer定期安排,因为Fragment生命周期方法不会被重复调用,而fragment是稳定和奔跑。在onViewCreated

fragment方法中粘贴代码

示例

     Timer timer = new Timer(); //Global declaration
     public void onViewCreated(..){
     ...
        timer.schedule(new TimerTask() { 
                @Override
                public void run() {
                     if (heartdata >= 100 || bloodata >= 120 || tempdata >= 100)
                      {
                        sendMessage();
                      }
                }
            },60 * 1000); // Which will run for every 60 seconds
      ...
      }

    @Override
    public void onDestroy() {
        super.onDestroy();
        timer.cancel();
    }

答案 1 :(得分:0)

您可以查看Fragment生命周期here。基本上没有方法可以不断检查"。例如,只有在恢复片段时才调用方法onResume()

如果您想要不断检查是否满足条件,我建议您创建一个后台线程并在该线程中运行上述代码。满足条件后,发送您的信息。

答案 2 :(得分:0)

创建一个名为isRunning的布尔值 在onResumeisRunning设为true,在onPause设置为false。 或者根据需要使用onStartinStop

然后你的while语句: 无论你想要什么while(isRunning)do ......

但是我不确定这对性能是否有益

P.S。:如果您想反复进行激活,请使用whilefor ..不是if ... if是一种检查

答案 3 :(得分:0)

我认为为了这个目的,你应该使用一个新的Thread来连续检查那个条件,当达到那个条件时,给回调片段。

答案 4 :(得分:0)

尝试此代码,它会检查每个1SEC

for (NSString* key in xyz) {
        id value = [xyz objectForKey:key];
        // do stuff
    }