android - Handler Runnable 即使在活动退出后也会运行
问题描述
我每 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);
}
});
}
解决方案
当活动被销毁时,您需要释放处理程序资源。
@override
protected void onDestroy() {
super.onDestroy();
h.removeCallbacksAndMessages(null);
h = null;
}
推荐阅读
- ubuntu - 在 Ubuntu 18.04 上禁用触摸板(暂时)
- java - 如何使用数组创建有组织的组?
- android - 导航到下一个片段时如何更改图像?
- javascript - if(item中的值)和if(item.hasOwnProperty(value))之间的javascript差异
- fabricjs - FabricJS iText 宽度和高度
- hibernate - JPQL Quesry in ManyToMany relation using JoinTable
- c# - 在负载均衡器服务器上获取 WebExceptions 标头
- spring-mvc - 如何使用 Spring MVC @RequestParam 解析不同的 ISO 日期/时间格式
- c# - 使用 using 语句正确处理 StreamWriter
- ruby-on-rails-3 - Rails 3:我有控制器名称和操作,需要为其获取路径和 http 动词