优先考虑新活动

时间:2012-10-29 13:32:17

标签: android multithreading android-activity

我有活动A需要在退出时做事 - 保存到数据库的东西 - 开始活动B

由于保存可能需要一段时间,我虽然我应该启动一个新线程让数据库访问在后台运行,而用户正在忙着读取活动B的内容。(B不使用保存的数据顺便说一句)

所以我参加了活动A

 FinishStuff(){
 Intent ourIntent = new Intent(this, ActivityB.class);
 startActivity(ourIntent);

 handler = new Handler();
 handler.post(dbSaver);
}
 public Runnable dbSaver = new Runnable() {

 @Override
 public void run() {
     saveToDbs();
 }

然而,会发生什么事情是立即调用活动B的OnCreate(),但是我的新Activity应该去的屏幕空间是黑色的,saveToDBs()完成在哪个阶段显示活动B. 有办法解决这个问题吗? TIA

2 个答案:

答案 0 :(得分:1)

您错误Handler Thread

线程可以使用Handler在另一个线程中运行一段代码(即更新UI,通知进度等),你需要的是一个新线程。

所以,你需要替换:

handler = new Handler();
handler.post(dbSaver);

由:

new Thread(dbSaver).start();

问候。

答案 1 :(得分:0)

  

我虽然我应该开始一个新线程让数据库访问在后台运行

正确。但是,您没有在上面显示的代码中启动新线程。