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;