我想知道片段运行时哪个方法经常调用?是onResume()。我有一个条件(如果声明),我希望片段不断检查条件,如果它是真的,做我想做的以下任务。 例如:
if (heartdata >= 100 || bloodata >= 120 || tempdata >= 100)
{
sendMessage();
}
我应该把这个IF语句放在哪里,以便android片段/ app不断检查条件并调用sendMessage(); 我把代码放在onCreate()它没有工作我也把它放在onCreateView()但没有工作请告诉我在哪里放这个代码..
答案 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
的布尔值
在onResume
将isRunning
设为true,在onPause
设置为false。
或者根据需要使用onStart
和inStop
。
然后你的while语句:
无论你想要什么while(isRunning)
和do
......
但是我不确定这对性能是否有益
P.S。:如果您想反复进行激活,请使用while
或for
..不是if
... if
是一种检查
答案 3 :(得分:0)
我认为为了这个目的,你应该使用一个新的Thread来连续检查那个条件,当达到那个条件时,给回调片段。
答案 4 :(得分:0)
尝试此代码,它会检查每个1SEC
for (NSString* key in xyz) {
id value = [xyz objectForKey:key];
// do stuff
}