zoukankan      html  css  js  c++  java
  • TabActivity里Actvity的生命周期

    遇到TabActivity里注册和销毁广播接收器应该写到Activity的哪些声明周期阶段里,所以上网查了查,

    发现,

    开始是同样的oncreate--onstart--onresume,

    当你切换到其他activity时你会发现他调用了onpause而不会调用onstop(即使你这时调用锁屏键他也不会onstop),

    当你退出这个tabactivity时他调用了onstop和ondestory。

    这个我们可以知道acitivity的生命周期交给了activitygroup来管理。

    另外今天做项目遇到一个很实用的小tips:

    在TabActivity里做tab切换的时候,如果当前的progressDialog并没有关闭会导致程序的崩溃,

    错误提示是:XXXActivity has leaked window ... that was originally adde here,

    大致的意思是存在窗口句柄泄露,即未能及时销毁某个PhoneWindow.

    其实解决方法很简单,重写onDestory(或者是onPause)方法,将progressDialog给dismiss掉即可。通常我的写法是:

     //当在UI线程中显示ProgressDialog时,
      //此时若想关闭Activity,
      //它会调用自己的onPause函数,
      //所以需要在onPause中关闭ProgressDialog,
      //然后再关闭Activity
      if(progressDialog!=null){
       if(progressDialog.isShowing()){
        progressDialog.dismiss();
       }
      }

    由于上面提到过,当用ActivityGroup来管理的时候,它的生命周期和activity走的不一样,故在此重写的是onPause而不是onDestory.

  • 相关阅读:
    Flutter Platform Channels
    catch socket error
    global position
    aria2 添加任务后一直在等待,不进行下载是什么情况?
    通知
    rename file
    长按弹菜单
    Linux命令行下如何终止当前程序?
    IOWebSocketChannel.connect handle errors
    writeAsBytes writeAsString
  • 原文地址:https://www.cnblogs.com/miya2012/p/2755567.html
Copyright © 2011-2022 走看看