Activity与startService的生命周期

原创 2013年12月05日 23:05:21

一. 最近自己在做一个通讯录的归属地划分模块;被Activity和Service的 生命周期这块折磨得蛋碎一地,今天来写下自己的分析结果

二.Activity的onCreate()方法中StartService的生命周期

1.点击应用图标: Activity:--->onCreate()--->onStart()-->onResume()

                              Service:--->onCreate()---->onStartCommand()--->onStart()

2.Activity跳到下一个界面时:当前Activity:onPause()--->onSaveInstanceState()---->onStoop()

                                                   下个Activity:onCreate()--->onStart()-->onResume()

3.当前界面按返回键时,当前Activity:onPause()--->onStop()---->onDestroy()

 

4.当前界面按HOMAE键,当前Activity:onPause()--->onSaveInstanceState()-->onStop()

    当返回到栈顶时如果Activity没有被处理掉的话:onRestart()--->onStart()--->onResume()

                                        Activity已经被处理掉的话:onCreate()--->onStart()---->onResume();此时可以从onCreate()方法出入的Bundle对象取出onSaveInstanceState()保存的配置                                               

 

5.onPause,onstop, onDestroy,三种状态 下 activity都有可能被系统干掉
为了保证程序的正确性,你要在onPause()里写上持久层操作的代码,将用户编辑的内容都保存到存储介质上(一般都是数据库 )。实际工作中因为生命周期的变化而带来的问题也很多,比如你的应用程序起了新的线程在跑,这时候中断了,你还要去维护那个线程,是暂停还是杀掉还是数据回滚,是吧?因为Activity可能被杀掉,所以线程中使用的变量和一些界面元素就千万要注意了,一般都是采用Android的消息机制 [Handler,Message]来处理多线程和界面交互的问题。

6.

      1).到startService了,通过StartService启动的Service与Activity无关即使Activity被杀死,Service依然在后台运行;我是在Service的onStart()方法去启动线程来对数据库进行查询的(查询时间有一分钟左右,比较久),这样问题就来了。

       2).当打开了很多界面且存联系人跳转到消息应用一段时间后再返回时,Activity上的数据全是空的了,查看的Activity的生命周期,返回时调用的方法是:onCreate()-->onStart()-->onResume();得知Activity已经被杀死,因此再返回到第一个Activity时又会调用onCreate()方法去StartService(),此时原先启动的Service并没有onDestroy().因此又会调用一个新的线程去查找数据库,那么此时就同时有两个线程操作数据库了;第一个线程先启动,所以它先执行完,执行完后就db.close();此时另一个线程正在查询但是db关闭了程序果断崩溃。

      3).解决方法:

      由于startService(),如果Service存在就只会调用onStart(),如果不存在调用onCreate()--->onStart();所以把启动线程移动到StartService的onCreate()方法

                                                                                                                                                                                                                     ---------------------未带完续,还有很多的疑问-------------

Activity和Fragment生命周期综合测试

  • 2016年09月10日 12:54
  • 29.56MB
  • 下载

Activity生命周期与启动模式

  • 2017年08月08日 14:11
  • 26.15MB
  • 下载

startService与bindService混合使用对Service生命周期的影响

项目开发中有遇到startService与bindService混合使用的情况,发现其对Service生命周期有很大影响,故与各位分享一下。。。   一、正常情况(应该大家都很熟了,简单介绍): (1...
  • codezjx
  • codezjx
  • 2015年04月27日 20:08
  • 3903

Activity生命周期示意图

  • 2017年05月02日 18:17
  • 81KB
  • 下载

activity_生命周期

  • 2012年09月01日 14:38
  • 129KB
  • 下载

Android中startService的使用及Service生命周期

Android中有两种主要方式使用Service,通过调用Context的startService方法或调用Context的bindService方法,本文只探讨纯startService的使用,不涉...

activity生命周期

  • 2012年12月03日 21:38
  • 722KB
  • 下载

android 组件Activity生命周期

  • 2014年04月03日 18:01
  • 87KB
  • 下载

Service之startService,bindService交叉使用时的生命周期

1.仅startService和stopService配合使用,与仅bindService,unbindService配合使用时,service生命周期是比较明确的 2.当startService,s...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Activity与startService的生命周期
举报原因:
原因补充:

(最多只允许输入30个字)