我有 Activity A 需要在退出时做一些事情 - 将东西保存到数据库 -开始 Activity B
由于保存可能需要一段时间,虽然我应该启动一个新线程以在后台运行数据库访问,而用户正忙于阅读 Activity B 的内容。(顺便说一句,B 不使用保存的数据) .
所以我在Activity中有
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();
}
但是,会立即调用 Activity B 的 OnCreate(),但是我的新 Activity 应该去的屏幕空间是黑色的,直到 saveToDBs() 在 Activity B 显示的阶段完成。 有什么办法可以解决这个问题? 时间差
最佳答案
你把 Handler
误认为是 Thread
。
线程可以使用 Handler
在另一个线程中运行一段代码(即更新 UI、通知进度等),您需要的是一个新线程。
所以,你需要替换:
handler = new Handler();
handler.post(dbSaver);
通过:
new Thread(dbSaver).start();
问候。
关于android - 优先考虑新 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13122638/