Android:活动对话框/对话框意外消失

2024-04-18

我有一个申请TabActivity每次从引擎(NDK C 代码)收到回调时,我都会在其中显示一个对话框。我确保当应用程序处于恢复状态时显示对话框。

收到引擎的回调后,我启动NetworkDownDialog活动,但这会导致对话框停留一秒钟然后消失。如果我使用也会发生同样的事情Dialog or AlertDialog。最奇怪的是,失踪似乎是随机的(并不总是发生)。

这是一个 S3 设备。这是怎么回事?

编辑于 23/05/2013

网络关闭对话框代码

public class NetworkDownDialog extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.network_down);
        Logger.d("NetworkDownDialog", "----------onCreate-----------");
        registerReceiver(mNetworkDownReceiver, new IntentFilter("NetworkDown"));
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(mNetworkDownReceiver);
        Logger.d("NetworkDownDialog", "------onDestroy-------");
    }
    @Override
    protected void onResume() {
        super.onResume();
        Logger.d("NetworkDownDialog", "------onResume-------");
    }
    @Override
    protected void onRestart() {
        super.onRestart();
        Logger.d("NetworkDownDialog", "------onRestart-------");
    }
    @Override
    protected void onStart() {
        super.onStart();
        Logger.d("NetworkDownDialog", "------onStart-------");
    }
    @Override
    protected void onStop() {
        super.onStop();
        Logger.d("NetworkDownDialog", "------onStop-------");
    }
    @Override
    public void onBackPressed() {
        Logger.d("NetworkDownDialog", "------onBackPressed Do nothing-------");
    }
    private BroadcastReceiver mNetworkDownReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            finish();
        }
    };
}

在日志中,这是我看到的:

05-15 20:48:02.981 D/NetworkDownDialog( 1050): ------onCreate-------
05-15 20:48:02.981 D/alsa_ucm(  202): Setting mixer control: RX5 MIX1 INP2, value: RX2
05-15 20:48:02.991 D/alsa_ucm(  202): Setting mixer control: RX6 DSM MUX, value: DSM_INV
05-15 20:48:02.991 D/alsa_ucm(  202): Setting mixer control: LINEOUT2 Volume, value: 100
05-15 20:48:02.991 D/alsa_ucm(  202): Setting mixer control: LINEOUT4 Volume, value: 100
05-15 20:48:02.991 D/NetworkDownDialog( 1050): ------onStart-------
05-15 20:48:02.991 D/alsa_ucm(  202): Setting mixer control: RX5 Digital Volume, value: 65
05-15 20:48:02.991 D/NetworkDownDialog( 1050): ------onResume-------

显示活动对话框

 **05-15 20:48:05.073 W/InputDispatcher(  716): channel ~ Consumer closed input channel or an error occurred.  events=0x9
05-15 20:48:05.073 E/InputDispatcher(  716): channel ~ Channel is unrecoverably broken and will be disposed!**
05-15 20:48:05.073 W/InputDispatcher(  716): Attempted to unregister already unregistered input channel
05-15 20:48:05.083 I/SurfaceFlinger(  195): id=2033 Removed idx=5 MapSz=4
05-15 20:48:05.083 D/KeyguardViewMediator(  716): setHidden false
05-15 20:48:05.103 I/Adreno200-EGLSUB(  195): <CreateImage:897>: Android Image
05-15 20:48:05.103 I/Adreno200-EGLSUB(  195): <GetImageAttributes:1106>: RGBA_8888
**05-15 20:48:05.103 E/BufferQueue(  195): [mypackage.NetworkDownDialog] dequeueBuffer: SurfaceTexture has been abandoned!
05-15 20:48:05.103 E/SurfaceTextureClient( 1050): dequeueBuffer failed (No such device**)
05-15 20:48:05.103 D/PhoneStatusBar(  894): addNotification score=0
05-15 20:48:05.123 E/ViewRootImpl( 1050): Could not lock surface
05-15 20:48:05.123 E/ViewRootImpl( 1050): java.lang.IllegalArgumentException
05-15 20:48:05.123 E/ViewRootImpl( 1050):   at android.view.Surface.lockCanvasNative(Native Method)
05-15 20:48:05.123 E/ViewRootImpl( 1050):   at android.view.Surface.lockCanvas(Surface.java:88)
05-15 20:48:05.123 E/ViewRootImpl( 1050):   at android.view.ViewRootImpl.drawSoftware(ViewRootImpl.java:2314)
05-15 20:48:05.123 E/ViewRootImpl( 1050):   at android.view.ViewRootImpl.draw(ViewRootImpl.java:2277)
05-15 20:48:05.123 E/ViewRootImpl( 1050):   at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2145)
05-15 20:48:05.123 E/ViewRootImpl( 1050):   at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1956)
05-15 20:48:05.123 E/ViewRootImpl( 1050):   at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1110)
05-15 20:48:05.123 E/ViewRootImpl( 1050):   at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4472)
05-15 20:48:05.123 E/ViewRootImpl( 1050):   at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
05-15 20:48:05.123 E/ViewRootImpl( 1050):   at android.view.Choreographer.doCallbacks(Choreographer.java:555)
05-15 20:48:05.123 E/ViewRootImpl( 1050):   at android.view.Choreographer.doFrame(Choreographer.java:525)
05-15 20:48:05.123 E/ViewRootImpl( 1050):   at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
05-15 20:48:05.123 E/ViewRootImpl( 1050):   at android.os.Handler.handleCallback(Handler.java:615)
05-15 20:48:05.123 E/ViewRootImpl( 1050):   at android.os.Handler.dispatchMessage(Handler.java:92)
05-15 20:48:05.123 E/ViewRootImpl( 1050):   at android.os.Looper.loop(Looper.java:137)
05-15 20:48:05.123 E/ViewRootImpl( 1050):   at android.app.ActivityThread.main(ActivityThread.java:4918)
05-15 20:48:05.123 E/ViewRootImpl( 1050):   at java.lang.reflect.Method.invokeNative(Native Method)
05-15 20:48:05.123 E/ViewRootImpl( 1050):   at java.lang.reflect.Method.invoke(Method.java:511)
05-15 20:48:05.123 E/ViewRootImpl( 1050):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004)
05-15 20:48:05.123 E/ViewRootImpl( 1050):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771)
05-15 20:48:05.123 E/ViewRootImpl( 1050):   at dalvik.system.NativeStart.main(Native Method)

在这种情况下,ActivityDialog出现上述情况后就消失了。

为什么我的对话框消失了?我的 C 级本机代码中的内存损坏是否可能导致此问题?我在 UI 方面做错了什么吗?我完全被困住了...

2013年5月24日编辑

05-24 19:49:00.025 I/SurfaceFlinger( 1901): id=2147 Removed NainTabActivity idx=3 MapSz=4

05-24 19:49:00.025 I/SurfaceFlinger( 1901): id=2147 Removed NainTabActivity idx=-2 MapSz=4

SurfaceFlinger 删除了我的选项卡活动。这会导致对话框删除吗?


  1. 确保您正在显示带有应用程序上下文的对话框。
  2. 确保没有两个事件同时发生并击中代码的同一部分。即,当您要显示对话框时,c 代码中的另一个事件会显示对话框。
  3. 确保您的应用程序有足够的内存以顺利运行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android:活动对话框/对话框意外消失 的相关文章

  • 如何在createQueryBuilder中使用通配符?

    在我的存储库类中 我使用 public function getItemsByTag tag qb this gt createQueryBuilder c gt select c gt where c tags LIKE bipolar
  • 在 OpenXML 中应用数字格式

    我正在尝试使用 OpenXML 从头开始 创建 Excel 电子表格 并且一切正常 将实际值转储到实际单元格中 但现在我正在尝试将数字格式应用于列 但遇到了问题 我有styles xml看起来像这样
  • 使用 php 变量更改 css 类

    这里需要您的帮助 正如标题所示 我正在尝试使用 PHP 变量更改 css 类 所以基本上我想创建一个回显某些代码的循环 但我希望第一个循环中的 div 类有所不同 它应该被隐藏 这是我为使问题变得清晰而编写的简化代码 我不知道错误在哪里 请
  • 如何在odoo中重写js函数

    我想加载 shop checkout url 函数是 odoo define change info order website sale change info order function require use strict oe w
  • 如何在 Angular 2 中订阅 DOMContentLoaded 事件?

    我正在将 UI 主题从 Angular 1 移植到 Angular 2 在第 1 个版本中 我有 viewContentLoaded事件 我想将其重新制作为 Angular 2 我正在尝试使用 HostListener DOMContent
  • NV_path_rendering替代方案[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我刚刚观看了 Siggraph 2012 的一个非常令人印象深刻的演示 http nvidia fullviewmedia com sig
  • addEventListener keydown 不起作用

    我在互联网上找到了一些基本的 Pong 代码 并尝试添加按键 代码在这里 http cssdeck com labs ping pong game tutorial with html5 canvas and sounds http css
  • Selenium Python 使用代理运行浏览器[重复]

    这个问题在这里已经有答案了 我正在尝试编写一个非常简单的脚本 该脚本从 txt 文件获取代理 不需要身份验证 并用它打开浏览器 然后沿着代理列表循环此操作一定次数 我确实知道如何打开 txt 文件并使用它 我的主要问题是让代理正常工作 我见
  • 使用 OpenLayers 动态添加自定义标记到地图

    我想让用户在地图上添加自定义标记以及每个标记的描述 任何提示 任何教程的链接都会非常有用 您可以注册一个函数来在地图上 点击 事件 当用户单击它时 会自动添加该标记 尝试这样的事情 map is your map created using
  • 新的 .NET 6 控制台模板中的 C# 函数重载不起作用

    我在尝试重载该函数时遇到错误Print object in the 新的 NET 6 C 控制台应用程序模板 https learn microsoft com en us dotnet core tutorials top level t
  • 如何在 yii 中设置 cron 作业

    我是 yii 的新手 我正在做一个项目 我写了一个向客户发送自动提醒的功能 假设这个函数位于 url http somedomain com index php somecontroller someaction 我想为此网址设置 cron
  • Android 使用非公历

    我正在创建一个DatePickerDialogFragment用户将在其中选择出生日期 我想确保我可以处理非公历日期 我无法更改在我的设备上使用的日历类型 Android 是否允许用户切换日历类型 如果是的话 步骤是什么 到目前为止我还没有
  • 如何在运行时更改 UIMenu 内 UIAction 的状态?

    如何更改 UIAction 的状态 目标是切换 UIMenu 内 UIAction 旁边的状态复选标记 更改 UIAction 的state通过存储在视图控制器中的引用似乎根本不会改变状态 我错过了什么吗 View Controller i
  • PDO 返回不正确但重复的数据。密钥不在数据库中。

    我刚开始使用 pdo 语句 所以可能是一些简单的东西 我还没有在 php net 上读过 查询数据库时我收到重复的结果 Result 0 gt Array umeta id gt 31 0 gt 31 user id gt 2 1 gt 2
  • 在Java的System.out中以表格格式输出

    我正在从数据库获取结果 并希望将数据作为 Java 标准输出中的表输出 我尝试过使用 t 但我想要的第一列的长度变化很大 有没有办法将其显示在类似输出的漂亮表格中 Use System out format http java sun co
  • Shap - 颜色条不显示在摘要图中

    显示summary plot时 不显示颜色条 shap summary plot shap values X train 我尝试过改变plot size 当绘图较高时 会出现颜色条 但它非常小 看起来不应该 shap summary plo
  • FindAsync 很慢,但是延迟加载很快

    在我的代码中 我曾经使用加载相关实体await FindAsync 希望我能更好地遵守 C 异步指南 var activeTemplate await exec DbContext FormTemplates FindAsync exec
  • Javascript:修改原型不会影响现有实例[重复]

    这个问题在这里已经有答案了 我创建了原型的 2 个实例 更改了原型中的函数 更改反映在两个实例中 很棒 但是 当我通过删除该函数来修改原型时 该函数对于现有实例仍然存在 function A this name cool A prototy
  • jvm 如何以及何时何地更改 Linux 的最大打开文件值?

    在linux中 每个登录用户的每个进程的最大打开文件数有限制 如下所示 ulimit n 1024 当我学习java nio时 我想检查这个值 因为channel在Linux中也是一个文件 所以我编写了一个客户端代码来不断创建socketC
  • 同时有两个操作栏(底部和向上)?

    我需要制作两个操作栏 顺便说一下我正在使用actionBarSherlock 所以我真正需要的是在正常操作栏上放置一个 欢迎屏幕 开关 并添加两个正常的 ActionBar 操作选项 与我需要的类似的是 Gmail 和地图 如下所示 htt

随机推荐