【问题标题】:Handler Runnable runs even after activity exitHandler Runnable 即使在活动退出后也会运行
【发布时间】:2018-10-15 07:07:12
【问题描述】:

我每 5 秒将文本视图中的文本用户类型更新到数据库。 处理程序从 textview 收集数据并将其保存到数据库。 但是即使在我按下返回按钮并返回到 MainActivity 之后,更新代码也会运行。

如何在退出活动后停止运行代码。

  public class CreateBoxActivity extends AppCompatActivity {
    Long current_BoxID  = null, parent_BoxID = null;
    Handler h=new Handler();

       @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_create_box);
        h.post(new Runnable(){ //Run this every five seconds to update the data
            @Override
            public void run() {

                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                String editeddate = sdf.format(Calendar.getInstance().getTime());
                String titleText =  ((EditText)findViewById(R.id.new_box_title)).getText().toString();
                String descriText =  ((EditText)findViewById(R.id.new_box_descri)).getText().toString();
                Boxes nbx = new Boxes(1, null , titleText, descriText, editeddate, editeddate);
                BoxesController.UpdateBox(nbx);

                h.postDelayed(this,5000);
            }
        });
    }

【问题讨论】:

    标签: android runnable android-handler


    【解决方案1】:

    在方法之外创建可运行对象,例如:

    Runnable  runnable =new Runnable() {
      @Override public void run() {
    
      }
    };
    

    在您的活动的onPause 电话中:

    h.removeCallback(runnable);
    

    【讨论】:

      【解决方案2】:

      您可以在 onPause 中移除处理程序

      Runnable  runnable =new Runnable() {
            @Override public void run() {
      
            }
          };
          new Handler().removeCallbacks(runnable);
      

      【讨论】:

        【解决方案3】:

        您需要在 Activity 被销毁时释放处理程序资源。

        @override
        protected void onDestroy() {
            super.onDestroy();
            h.removeCallbacksAndMessages(null);
            h = null;
        } 
        

        【讨论】:

          猜你喜欢
          • 2018-08-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-03
          • 2020-05-06
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多