2011-03-30 62 views
0

当用户在我的应用程序中按下后退按钮时。下面是这种情况:进入ANR模式的应用程序

  1. 用户启动应用程序 - 活动 显示出来
  2. 用户按下后退按钮
  3. 用户重新启动应用程序。 此时,应用程序仅显示一个空白屏幕,但在某些时间后,没有任何按钮(家庭/后台)响应,此时会出现强制关闭对话框。
    注意:如果用户按下“Home”,然后重新启动应用程序,则不会发生此情况,只有在用户按下“Back”后才能重新启动。

在我的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

+1

当你按下后退按钮时,活动被破坏,所以第二次,它在'onCreate()'中被卡住了。那里会发生什么? – bigstones 2011-03-30 19:39:52

+0

@Travis你可以标记,但这是BACK按钮的默认行为:http://developer.android.com/guide/practices/ui_guidelines/activity_task_design.html#navigating_away_from_an_activity – bigstones 2011-03-30 20:01:34

+0

@bigstones:+1。你是绝对正确的。活动**被毁坏。那是导致应用程序挂起的原因...在我的onDestroy()方法中存在一个错误。万分感谢! – OceanBlue 2011-03-30 20:36:11

回答

2

您可能正在UI线程上发出网络请求。您可以结账Painless ThreadingAsyncTask来处理。

请注意,在onCreateonDestroy中进行设置和拆卸可能是个不错的主意。在活动的life cycle期间可以多次调用onStart;你的代码是否在防范这种情况?

+0

感谢您的回答。两点:1.事实上,我正在UI线程上发出网络请求。这不是一个问题,只有当网络请求很长时,比如下载一个巨大的文件等。 2.其实我的原代码是在onCreate()和onDestroy()。我在调试时将它移到了onStart()/ onStop()。如果使用onCreate()/ onDestroy(),也会出现同样的问题。 – OceanBlue 2011-03-30 19:50:45

+0

请参阅编辑我的问题。 – OceanBlue 2011-03-30 20:07:43

+1

您可以使用调试器了解您的代码挂在哪里吗? – 2011-03-30 20:10:18

相关问题