我有活动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
答案 0 :(得分:1)
您错误Handler
Thread
。
线程可以使用Handler
在另一个线程中运行一段代码(即更新UI,通知进度等),你需要的是一个新线程。
所以,你需要替换:
handler = new Handler();
handler.post(dbSaver);
由:
new Thread(dbSaver).start();
问候。
答案 1 :(得分:0)
我虽然我应该开始一个新线程让数据库访问在后台运行
正确。但是,您没有在上面显示的代码中启动新线程。