Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如果将消息发送给活动不可见的处理程序,会发生什么情况?_Android_Multithreading_Handler - Fatal编程技术网

Android 如果将消息发送给活动不可见的处理程序,会发生什么情况?

Android 如果将消息发送给活动不可见的处理程序,会发生什么情况?,android,multithreading,handler,Android,Multithreading,Handler,我在activity onCreate方法中创建了一个处理程序,并启动了一个后台线程。在后台线程中,我将调用处理程序的sendMessage方法(在处理程序的handleMessage方法中,我更新活动的UI),但该活动可能已不可见,会发生什么情况?如果您不在该处理程序中执行任何与UI相关的操作,执行起来很好。请记住,保留对非活动活动的引用可能会造成内存泄漏-您将阻止VM收集未使用的资源。如果在该处理程序中执行任何与UI相关的操作,会发生什么?将引发异常?是的,WindowManager.Bad

我在activity onCreate方法中创建了一个处理程序,并启动了一个后台线程。在后台线程中,我将调用处理程序的sendMessage方法(在处理程序的handleMessage方法中,我更新活动的UI),但该活动可能已不可见,会发生什么情况?

如果您不在该处理程序中执行任何与UI相关的操作,执行起来很好。请记住,保留对非活动活动的引用可能会造成内存泄漏-您将阻止VM收集未使用的资源。

如果在该处理程序中执行任何与UI相关的操作,会发生什么?将引发异常?是的,WindowManager.BadTokenExceptionAFAIK,它不会引发任何异常。但是,当您恢复应用程序时,它将执行所有与UI相关的语句。这将在恢复时增加一些延迟,当执行这些语句时,您将看到黑屏。@Karan:“恢复应用程序”是什么意思?处理程序如何检查是否运行与UI相关的“语句”?不要发布错误的信息,如果人们阅读这些信息,可能会弄乱他们的应用程序。只需将显示AlertDialog的Runnable发送到不可见活动的主线程中的处理程序,并查看发生了什么尝试:在活动中添加一个textview,并在handle中递归更新它,然后查看发生了什么。