Android handler.removecallbacks不工作
这是我应用程序的核心Android handler.removecallbacks不工作,android,handler,runnable,Android,Handler,Runnable,这是我应用程序的核心 @Override public void onDestroy() { super.onDestroy(); mHandler.removeCallbacksAndMessages(null); stopRepeatingTask(); } void startRepeatingTask() { mStatusChecker.run(); } void stopRepeatingTask() { mHandler.removeCa
@Override
public void onDestroy() {
super.onDestroy();
mHandler.removeCallbacksAndMessages(null);
stopRepeatingTask();
}
void startRepeatingTask() {
mStatusChecker.run();
}
void stopRepeatingTask() {
mHandler.removeCallbacks(mStatusChecker);
}
我从JSON文件中获取问题和答案,并检查edittext中给出的值是否与JSON文件中的答案值相同。
但是,在解决了这个停止处理程序的问题之后,我还应该考虑另一个问题,即当我在edittext中键入问题1的答案时,第一个循环结束,编译器将检查我键入的答案与问题2的答案。我应该想办法减缓执行过程
public void updateStatus(){
try {
JSONObject jo_inside = m_jArry.getJSONObject(list.get(k));
k++;
formula_value = jo_inside.getString("ques");
url_value = jo_inside.getString("ans");
textView.setText(formula_value);
我的Runnable:
if (editText.getText().toString().equals(url_value)) {
total++;
textView1.setText("Correct");
} else {
textView1.setText("Wrong");
}
editText.setText(" ");
if(k==6){
k=0;
j++;
}
}
catch (JSONException e){
e.printStackTrace();
}
}
Runnable mStatusChecker=new Runnable(){
@凌驾
公开募捐{
试一试{
如果(k==0){
试一试{
//当j等于或大于数组大小(在本例中为5)时,处理程序应该停止,但它会继续循环。
如果(j>=m_jArry1.length()){
停止重复任务();
}
JSONObject JSONObject=m_jArry1.getJSONObject(j);
m_jArry=jsonObject.getJSONArray(“公式”);
list=newarraylist(m_jArry.length());
对于(i=0;i
}
OnDestroy()来销毁处理程序,这是我不知道该做什么的地方
做
Sanjay将OnDestroy()函数更改为
Runnable mStatusChecker = new Runnable() {
@Override
public void run() {
try {
if(k==0){
try {
//The handler should stop when j is equal to or greater than Array size which is 5 in this case but it keeps on looping.
if(j>=m_jArry1.length()){
stopRepeatingTask();
}
JSONObject jsonObject = m_jArry1.getJSONObject(j);
m_jArry = jsonObject.getJSONArray("formules");
list = new ArrayList<Integer>(m_jArry.length());
for (i = 0; i < m_jArry.length(); i++) {
list.add(i);
}
Collections.shuffle(list);
}catch(JSONException e){
e.printStackTrace();
}
}
updateStatus();
} finally {
mHandler.postDelayed(mStatusChecker, mInterval);
}
}
};
//I removed this loadJSONFromAsset() function because i have no problem in it.
尝试将handler和runnable设置为静态
@Override
public void onDestroy() {
mHandler.removeCallbacksAndMessages(null);
super.onDestroy(); // notice: we call super after removing handler callbacks and messages
}
为我工作
@Override
public void onDestroy() {
mHandler.removeCallbacksAndMessages(null);
super.onDestroy(); // notice: we call super after removing handler callbacks and messages
}
public static Handler handler = new Handler();
public static Runnable runnable;