等待一个 Runnable 完成,然后再运行另一个 Runnable
我有一个带有主标签活动的Android应用程序,以及各个标签中的几个活动。在我的主要活动的onCreate()中,我有一个运行可创建列表的运行项,在各个活动中,我利用这个列表。
在各个活动的onCreate()中,我也有在列表中操作的Runnables。但是,我需要这些 Runnables 仅在主选项卡活动的 Runnable 完成创建列表时运行,否则我将获得一个空列表。我正试图找到一种优雅的方法来做到这一点。现在,在我的主要活动的 Runnable 中,我正在设置一个全局布尔变量 isDone,而在我的个人活动的 Runnable 中,我正在等待 isDone 通过 while 循环进行设置。这有效,但可能不是最好的方法。
有什么想法吗?
谢谢。
编辑:我正在尝试以下代码,但我收到运行时错误:
在我的 MainActivity's Runnable 中:
mainRunnable = new Runnable() {
public void run() {
try {
generateList();
synchronized(this) {
listDone = true;
notifyAll();
}
} catch (Exception e) {
Log.e("BACKGROUND_PROC", e.getMessage());
}
}
};
Thread thread = new Thread(null, mainRunnable, "Background");
thread.start();
在我的OtherActivity的Runnable中:
otherRunnable = new Runnable() {
public void run() {
synchronized(MainActivity.mainRunnable) {
if (!MainActivity.getListDone()) {
try {
wait();
} catch (InterruptedException e) {
}
}
}
}
};
Thread thread = new Thread(null, otherRunnable, "Background");
thread.start();
mainRunnable似乎完全运行,但另一个Runnable似乎导致应用程序崩溃。我收到以下错误消息:
01-10 15:41:25.543: E/WindowManager(7074): Activity com.myapp.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@40539850 that was originally added here
01-10 15:41:25.543: E/WindowManager(7074): android.view.WindowLeaked: Activity com.myapp.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@40539850 that was originally added here