android - 优先考虑新 Activity

标签 android multithreading android-activity

我有 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/

相关文章:

android - 在 Android Studio 中找不到 com.android.support :appcompat-v7:25. 3.1?

java - 当我在 getView() 中将某些项目设置为 view.invisible 时,其他项目不会出现

c# - 多线程和委托(delegate)调用

android - 为现有应用程序创建即时应用程序

android - onSaveInstanceState 不起作用

java - 从 AndEngine 切换到 libgdx - 需要了解什么?

Android Studio 在截屏时卡住

java - 并发:在自定义连接池中实现连接超时

java - 如何在JAVA中一个接一个地播放文件夹中的音频

java - 如何在 Android 中恢复最近暂停的 Activity ?