应用程序进入 ANR 模式

发布于 2024-10-27 20:38:46 字数 1421 浏览 0 评论 0原文

当用户按下我的应用程序中的后退按钮时。这是场景:

  1. 用户启动应用程序 - Activity 显示
  2. 用户按下后退按钮
  3. 用户重新启动应用程序。 此时应用程序仅显示空白屏幕,没有任何按钮(主页/后退)响应,之后 有时会出现强制关闭对话框。
    注意:如果用户按“主页”然后重新启动应用程序,只有当用户按“返回”然后重新启动应用程序时,才不会发生这种情况。

在我的 onCreate() 中,我有一些网络设置代码。但是,onDestroy()有相应的清理代码,所以我不明白为什么会发生这种情况。

@Override
public void onCreate(Bundle savedInstanceState) {
    Log.d(DEBUG_TAG, "onCreate()");
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

     // Aquire the multicast lock
     // Create an instance of JmDNS
     // Add a listener for Bonjour services of a given type 
}

@Override
protected void onDestroy() {
    Log.d(DEBUG_TAG, "onDestroy()");
     // Remove the services listener 
     // Set the reference to JmDNS instance null
     // Release the multicast lock
    super.onDestroy();
}

不知道发生了什么,也不知道如何调试。

有趣的是 - "Zeroconf Browser" 是我从 Android Market 下载的一个流行应用程序,用于调试我的应用程序 - 似乎有同样的问题。

编辑:将代码从 onStart()/onStop() 更改为 onCreate()/onDestroy()。和以前一样的问题。

编辑:对于任何遇到类似问题的人来说,这就是导致我痛苦的原因。 Android 代码不是罪魁祸首: http://sourceforge.net/tracker /index.php?func=detail&aid=2933183&group_id=93852&atid=605791

When the users presses the back button in my application. Here is the scenario:

  1. User starts the application - Activity
    shows up
  2. User presses back button
  3. User re-starts the application. At this point application just shows a blank screen, none of the buttons(home/back) respond, after
    some time Force-close dialog comes up.

    NOTE: If the user presses "Home" and then relaunches the app, this doesn't happen, only if the user presses "Back" and then relaunches it.

In my onCreate() I have some network setup code. However, onDestroy() has the corresponding cleanup code, so I don't understand why this is happening.

@Override
public void onCreate(Bundle savedInstanceState) {
    Log.d(DEBUG_TAG, "onCreate()");
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

     // Aquire the multicast lock
     // Create an instance of JmDNS
     // Add a listener for Bonjour services of a given type 
}

@Override
protected void onDestroy() {
    Log.d(DEBUG_TAG, "onDestroy()");
     // Remove the services listener 
     // Set the reference to JmDNS instance null
     // Release the multicast lock
    super.onDestroy();
}

Not sure what is going on, and don't know how to debug this.

Interestingly - "Zeroconf Browser" a popular app that I downloaded from Android Market to use to debug mine - seems to have the same issue.

EDIT: Changed the code from onStart()/onStop() to onCreate()/onDestroy(). Same problem as before.

EDIT: For anyone who runs in a similar problem, this is what was causing my misery. Android code wasn't the culprit:
http://sourceforge.net/tracker/index.php?func=detail&aid=2933183&group_id=93852&atid=605791

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

纸伞微斜 2024-11-03 20:38:46

您可能正在 UI 线程上发出网络请求。您可以查看 Painless ThreadingAsyncTask 用于处理该问题。

请注意,在 onCreateonDestroy 中进行设置和拆卸可能是个好主意。 onStart 可以在 Activity 的生命周期内多次调用循环;您的代码是否可以防范这种情况?

You may be making network requests on the UI thread. You might checkout Painless Threading and AsyncTask for handling that.

Note that it might be a good idea to do your setup and tear-down in onCreate and onDestroy. onStart can be called multiple times during the activity's life cycle; is your code guarding against this case?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文