我有以下Android场景:
我的活动启动一个异步任务来执行后台活动(AsyncTask
类),然后搜索帐户。AbstractAuthenticator
如果不存在帐户,则在前一个 AsyncTask 仍在运行时,会通过调用 UI 来创建新帐户。
该任务最终将在我之前活动的主线程上完成并运行 onPostExecute。
我的问题如下:如果任务在我的活动处于顶部时完成,AlertDialog
则正确显示;相反,如果在用户输入新帐户的用户名/密码时任务完成,我会InvocationTargetException
在尝试显示警报时收到一个。
实际上,AlertDialog 必须仅在活动处于活动状态时才显示。我可以修改我的代码并利用onStart
以下伪代码的方法:
public class MyActivity {
private boolean displayAlertOnStart = false;
protected void onStart(){
super.onStart();
if (displayAlertOnStart){
displayAlert();
displayAlertOnStart = false;
}
}
private void handleTaskCallback() {
if (activityIsOnTop()) //How do I get this???
displayAlert();
else
displayAlertOnStart = true;
}
我想以编程方式知道当前活动是“在顶部”还是另一个活动是前台。这样我会在下次运行 onStart 时执行我的逻辑。
欢迎任何其他(和更简单的)解决方案。开发工具包 7。
谢谢