- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有几个问题想与大家分享。
第一个与标题中的错误有关。 FirstRun.java:82
指的是 alert.show();
而 FirstRun.java:63
指的是 alertDialog.show();
我观察到的行为是:
完整的日志:
32444-32444/carpedujourproductions.quickpronote E/WindowManager: Activity carpedujourproductions.quickpronote.FirstRun has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{967f7300 V.E..... R.....ID 0,0-729,594} that was originally added here
android.view.WindowLeaked: Activity carpedujourproductions.quickpronote.FirstRun has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{967f7300 V.E..... R.....ID 0,0-729,594} that was originally added here
at android.view.ViewRootImpl.<init>(ViewRootImpl.java:345)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:239)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
at android.app.Dialog.show(Dialog.java:281)
at carpedujourproductions.quickpronote.FirstRun.onCreate(FirstRun.java:63)
at android.app.Activity.performCreate(Activity.java:5207)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2281)
at android.app.ActivityThread.access$600(ActivityThread.java:148)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1263)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5124)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:110)
at dalvik.system.NativeStart.main(Native Method)
32444-32444/carpedujourproductions.quickpronote E/WindowManager: Activity carpedujourproductions.quickpronote.FirstRun has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{968738b8 V.E..... R......D 0,0-729,585} that was originally added here
android.view.WindowLeaked: Activity carpedujourproductions.quickpronote.FirstRun has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{968738b8 V.E..... R......D 0,0-729,585} that was originally added here
at android.view.ViewRootImpl.<init>(ViewRootImpl.java:345)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:239)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
at android.app.Dialog.show(Dialog.java:281)
at android.app.AlertDialog$Builder.show(AlertDialog.java:951)
at carpedujourproductions.quickpronote.FirstRun.onCreate(FirstRun.java:82)
at android.app.Activity.performCreate(Activity.java:5207)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2281)
at android.app.ActivityThread.access$600(ActivityThread.java:148)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1263)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5124)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:110)
at dalvik.system.NativeStart.main(Native Method)
另一件事:
SharedPrefs 对我做了奇怪的事情。第一次启动应用程序后,设置似乎已保存,并且 /data/data/carpedujourproductions.quickpronote/shared_prefs/
中存在一个(非空)文件尽管我的任何根文件浏览器(ES;Solid)都无法读取它
最后:
我在处理条件时遇到了一些麻烦。如果您查看我的 MainActivity.java
,Android Studio 会告诉我字符串 urlt
和 url
从未使用过。我如何编写它们才能使它们遵循文件中显示的顺序? (读取 etab_sel
--> 确定并写入 urlt
--> 读取 user_is
--> 确定并写入 url
--> 以 url
作为变量之一执行 JS 代码。
非常非常感谢任何可以提供这些问题答案的人。这三者可能以某种方式相关。
最佳答案
您的问题源于您在 FirstRun.java
中使用的 2 个微调器:
Spinner, Spinner2
此外,我无法判断 onItemSelected()
中的代码是否符合您的预期:
@Override
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
switch (parent.getId()) {
case R.id.spinner:
etab_sel = parent.getItemAtPosition(pos).toString();
Spinner2.setVisibility(View.VISIBLE);
case R.id.spinner2:
user_is = parent.getItemAtPosition(pos).toString();
onStop();
}
}
因为,目前,如果在 Spinner 上选择了一个项目,并且 case R.id.spinner
被启动,则会发生掉落并且 case R.id.spinner2 中的语句
也将被执行,导致调用 onStop()
。
这是预期的行为吗?或者,您是不是忘记放置 break;
语句?
此外,在 onStop()
中,您调用了 finish()
。由于此时显示 alertDialog
和 dialog
,您会收到以下消息:
Activity carpedujourproductions.quickpronote.FirstRun has leaked window
Activity carpedujourproductions.quickpronote.FirstRun has leaked window
现在,更糟的是:
onItemSelected()
在 Spinner
初始化时被调用。
因此,一旦您初始化 R.id.spinner
> onItemSelected()
就会被调用 >> case R.id.spinner
>> fallthrough >> onStop()
案例 R.id.spinner
>> editor.putBoolean("IsInitialized", true);
> finish();
而 alertDialog
和 alert
正在显示 > 泄漏的窗口
既然你打电话了:
editor.putBoolean("IsInitialized", true);
在 onStop()
中,FirstRun
永远不会在后续应用启动时启动:
(来自 MainActivity.java)
boolean IsInitialized = settings.getBoolean("IsInitialized", false);
if (IsInitialized == false) {
Intent intent = new Intent(MainActivity.this, FirstRun.class);
startActivity(intent);
finish();
}
如您所见,这里不只有一个修复。您将不得不重新考虑 FirstRun
的逻辑方面。如果用户在首次启动时未从微调器中选择数据,您是否应该将 IsInitialized
设置为 true
?
要消除异常(目前),请执行以下操作:
// Declare two global boolean variables
boolean justStarted_1 = true;
boolean justStarted_2 = true;
....
....
@Override
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
// Spinner is set; Ignore
if (justStarted_1) {
justStarted_1 = false;
// Spinner2 is set; ignore
} else if (justStarted_2) {
justStarted_2 = false;
// finally: here
} else {
switch (parent.getId()) {
case R.id.spinner:
etab_sel = parent.getItemAtPosition(pos).toString();
Spinner2.setVisibility(View.VISIBLE);
break;
case R.id.spinner2:
user_is = parent.getItemAtPosition(pos).toString();
onStop();
break;
}
}
}
另一件事:您必须不断卸载应用程序才能看到 FirstRun
。目前一个简单的解决方法是使用:
editor.putBoolean("IsInitialized", false);
完成你在 FirstRun
上的工作,将 false
替换为 true
,做点别的吧!
关于android - Activity has leaked window that is originally added here & other issues, 关注,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18535473/
我的应用有时会抛出奇怪的日志,例如: :通知名称“com.apple.iapd.notify.extendedMode”已被注册 40 次 - 这可能是泄漏:通知名称“com.apple.iapd.n
我在 dotcloud 上使用 redis 内存存储,但尽管 key 已过期,但它的 used_memory 再也不会下降。从 redis-cli 使用 flushdb 或 flushall 不会导致
所以我一直在寻找这个问题的解决方案有一段时间了。我编写了一个程序来从两个单独的文本文件中获取数据,对其进行解析,然后输出到另一个文本文件和一个 ARFF 文件以供 Weka 分析。我遇到的问题是我编写
随着我继续学习 Rust,我正在从事一个涉及广泛使用谓词函数的项目。我决定用 Rust 闭包实现这些谓词,例如: type Predicate = Box bool> . 我的程序使用应用于这些谓词的
我的应用程序中有一个非常简单的 CUDA 组件。 Valgrind 报告了很多泄漏和仍然可以访问的问题,所有这些都与 cudaMalloc 调用有关。 这些泄漏是真的吗?我打电话cudaFree每 c
在 chrome latest 和其他浏览器中测试。此页面启动一个 timer() 每 60 秒刷新一次。在 init() 和每个 refresh() 上,它从服务器获取数据并在页面中显示相同的数据。
我正在尝试使用 pprof 来验证内存泄漏。 能否解释一下如何阅读您在以下位置找到的堆配置文件:http://localhost:6060/debug/pprof/heap?debug=1 此外,在启
我们遇到了由 GroovyShell/Groovy 脚本引起的内存泄漏(请参阅最后的 GroovyEvaluator 代码)。主要问题是(从 MAT 分析器复制粘贴): The class "java
我在 Ubuntu 中使用带有延迟长度字符变量的 gfortran 8.4,如下例所示: PROGRAM test IMPLICIT NONE CHARACTER(LEN=:),ALLOC
我正在阅读 Efficient Android Threading,上面写着 Instead of using nested classes with outer class references,
我们最近将我们的应用程序从 Java 7 迁移到 Java 8。从切换之日起,我们开始看到内存不足的元空间问题。我们尝试增加元空间空间大小,但没有帮助。 Jvisual VM(和 Jconsole)显
使用最新版本的 FFmpeg 读取图像文件时我遇到了内存泄漏,我无法追踪。 好像填完AVFrame与 avcodec_send_packet和 avcodec_receive_frame ,我调用av
我们有某种泄漏,我不明白其性质。 Gen0/1/2 堆的大小不会增加,但是工作集会增加,直到我们 OOM。 DebugDiag 告诉我 CLR.DLL 拥有不断增加的内存,并告诉我我们有一个不断增长的
一位系统管理员告诉 med,内存泄漏是不可见的。即,如果应用程序正在泄漏内存,则应用程序使用的所有内存可能在任务管理器或等效工具中不可见。 他似乎对此非常肯定。我一直认为在任务管理器(或进程资源管理器
我们正在自动化大多数可以自动化的已知问题(用于回归测试)。但是,我们确实通过第三方软件发现了内存泄漏。但是,我不知道如何自动执行我们发现并修复它们的内存泄漏测试。 有什么建议吗? 最佳答案 通常最好的
如果我有一个垃圾收集器来跟踪分配的每个对象并在它们不再具有对它们的可用引用时立即释放它们,您是否仍然存在内存泄漏? 考虑到内存泄漏是没有任何引用的分配不是不可能的还是我错过了什么? 编辑:所以我算作内
我有一个托管在 IIS 中的 WCF 应用程序(用 C#/.Net 4 编写)。随着时间的推移,进程的句柄计数或多或少以线性方式增加(在进程回收之前增加到 30,000)。根据 SysInternal
我从LeakSanitizer工具获得以下输出。正如工具所了解的那样,直接泄漏和间接泄漏有什么区别? 13: ==29107==ERROR: LeakSanitizer: detected memor
首先我是这样跑的: valgrind --leak-check=full --show-leak-kinds=all test_proc 和日志: ==30349== For counts of de
我知道每个进程都有操作系统分配的自己的地址空间。所以当程序终止时,整个地址空间都被标记为无效(或者可以再次自由重用)。现在,如果上述进程正在泄漏内存,那么在程序终止后会产生什么影响吗? 也就是说,如果
我是一名优秀的程序员,十分优秀!