问题

来源:互联网 发布:java文件下载 前台 编辑:程序博客网 时间:2024/05/20 12:47
大伙,我想问一个实践上的问题。
情景:一个异步线程在做网络请求,随后通过Handler来show Dialog展示相关信息,结果在这之前Activity已经关闭了,导致leaked window异常。


想问下这样的问题有什么解决办法或者是开发上的经验。
唐伯虎点蚊香(1102253792) 16:46:07 
使用AsyncTask时必须遵守如下规则:


1. 必须在UI线程中创建AsyncTask的实例


2. 必须在UI线程中调用AsyncTask的execute()方法


3. AsyncTask的onPreExecute(),onPostExecute(Result result),doInBackground(Params...params),onProgressUpdate(Progress...values)方法,不应该由程序员代码调用,而是有Android系统负责调用


4. 每个AsyncTask只能被执行一次,多次调用将会引发异常
深圳 The afters(1073639510) 16:47:22 
show Dialog之前先判断下Activity
太牛了你(635345315) 16:48:50 
添加一个标志   在activity的destroy方法中将标志职位false
太牛了你(635345315) 16:48:59 
弹出的时候判断标志
.d(980486705) 16:58:30 
非常感谢各位,不知有没有人开发出Dialog的辅助类,避免窗口泄露的异常。
太牛了你(635345315) 17:00:08 
窗口泄露指什么
.d(980486705) 17:02:30 
类似下面的错误。
Activity xxActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@41a48218 that was originally added here


最近在学习android服务,就我所理解的向各位大虾请教几个问题
1、服务分为android和native两种,前者是在框架层实现的,以java编写;后者是实现在系统运行库层的,以c或c++编写;
2、android服务又分为本地和远程服务,前者仅能在一个应用中使用;后者可以由多个应用访问
3、本地服务是运行在主进程的main线程上;远程服务是运行在独立进程的main线程上,需要编写aidl文件来实现
4、本地或远程服务都可以通过startService和bindService来启动,不同的是归属和生存周期管理
5、activity也可以启动一种服务,生存周期与activity相关。
0 0