Jes*_*sta 17 android view android-windowmanager
在我的服务我视图添加到WindowManager同addView().当我准备隐藏视图时,我removeView()使用View引用调用.这很有效 - 大部分时间.
我偶尔会有Force Close报告说View没有附加到WindowManager.这是有道理的.问题是,我认为该服务正在被Android杀死,当它是时候隐藏视图时,它会尝试删除错误的View View.
我已经尝试检查View是否为null,但显然它不是在这一点上,它根本就不是附加到的那个WindowManager.似乎如果View参考丢失,则无法再次访问它.
我怎样才能获得findViewById()与WindowManager自身相同的东西?如果我的服务被停止(被杀),会View自动删除WindowManager吗?有没有办法我可以存储引用,View以便如果服务停止我仍然可以删除View后者(我也试图避免泄漏View)?
kev*_*vin 11
在我的服务中,我使用addView()向WindowManager添加一个视图.当我准备隐藏视图时,我使用View引用调用removeView().这很有效 - 大部分时间.我偶尔会有Force Close报告,说View没有附加到WindowManager.
我现在正在遇到一模一样的问题.希望专家能够参与其中.
如何在WindowManager本身上获得相当于findViewById()的东西?
保持对已添加的视图的引用,只需使用removeView(mView).
目前在我的服务中,添加视图:
WindowManager.LayoutParams params = ...
mView = new View(this);
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
wm.addView(mView, params);
Run Code Online (Sandbox Code Playgroud)
然后删除视图,我通过捕获异常避免偶尔的FC:
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
try {
wm.removeView(mView);
} catch (Exception e) {}
Run Code Online (Sandbox Code Playgroud)
如果我的服务被停止(被杀死),View会自动从WindowManager中删除吗?
根据我的经验,当服务被杀死时,它们将被删除.您可以通过在不删除视图的情况下停止服务来测试此操作.不知道为什么会有效.
我担心的是,当我去删除视图时,我对WM的第二次引用是不同的.如果是这种情况,当我捕获异常时mView是否仍然显示?当我添加视图时,我会尝试保留对WM的引用,但是我遇到了一些问题,即系统服务的引用似乎随着时间的推移而变坏.
如果你解决了这个问题,请告诉我.
| 归档时间: |
|
| 查看次数: |
9388 次 |
| 最近记录: |