Handler Runnable 甚至在 activity 退出后运行
Handler Runnable runs even after activity exit
我每 5 秒将文本视图中的文本用户类型更新到数据库中。
处理程序从 textview 收集数据并将其保存到数据库。
但是更新代码即使在我按下后退按钮并 return 到 MainActivity 后也会运行。
如何在退出 activity 后停止 运行 代码。
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);
}
});
}
当activity销毁时,您需要释放处理程序资源。
@override
protected void onDestroy() {
super.onDestroy();
h.removeCallbacksAndMessages(null);
h = null;
}
您可以在 onPause 中删除处理程序
Runnable runnable =new Runnable() {
@Override public void run() {
}
};
new Handler().removeCallbacks(runnable);
在方法之外创建可运行的,如:
Runnable runnable =new Runnable() {
@Override public void run() {
}
};
在你的 activity 的 onPause
通话中:
h.removeCallback(runnable);
我每 5 秒将文本视图中的文本用户类型更新到数据库中。 处理程序从 textview 收集数据并将其保存到数据库。 但是更新代码即使在我按下后退按钮并 return 到 MainActivity 后也会运行。
如何在退出 activity 后停止 运行 代码。
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);
}
});
}
当activity销毁时,您需要释放处理程序资源。
@override
protected void onDestroy() {
super.onDestroy();
h.removeCallbacksAndMessages(null);
h = null;
}
您可以在 onPause 中删除处理程序
Runnable runnable =new Runnable() {
@Override public void run() {
}
};
new Handler().removeCallbacks(runnable);
在方法之外创建可运行的,如:
Runnable runnable =new Runnable() {
@Override public void run() {
}
};
在你的 activity 的 onPause
通话中:
h.removeCallback(runnable);