【发布时间】:2018-12-11 03:07:36
【问题描述】:
我有一个带有主选项卡活动的 Android 应用,以及各个选项卡中的多个活动。在我的主要活动的 onCreate() 中,我有一个创建列表的可运行文件,在各个活动中,我使用了这个列表。
在单个活动的 onCreate() 中,我还有对列表进行操作的 Runnables。但是,我需要这些 Runnable 仅在主选项卡活动的 Runnable 完成创建列表时运行,否则我会得到一个空列表。我试图找到一种优雅的方式来做到这一点。现在,在我的主要活动的 Runnable 中,我正在设置一个全局布尔变量 isDone,而在我的个人活动的 Runnable 中,我正在等待通过 while 循环设置 isDone。这可行,但可能不是最好的方法。
有什么想法吗?
谢谢。
编辑: 我正在尝试以下代码,但出现运行时错误:
在我的 MainActivity 的 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 似乎完全运行,但 otherRunnable 似乎导致应用程序崩溃。我收到以下错误消息:
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
【问题讨论】: