A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

泄密:黑马Android内部压轴技术面连载现世(三)

涨薪机密——潮流新技术、新框架资源以后不定期更新,
   


11. 同一个程序,但不同的Activity是否可以放在不同的Task任务栈中?
          Singleinstance 运行在另外的单独的任务栈里面
          比方说在激活一个新的activity时候, 给intent设置flag
          Intent的flag添加FLAG_ACTIVITY_NEW_TASK
          这个被激活的activity就会在新的task栈里面。
          Intentintent = new Intent(A.this,B.class);
          intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
          startActivity(intent);
12. 怎么在activity中启动自己对应的service?Activity怎么和service绑定?
          startService() 一旦被创建,与调用者无关,没法使用service里面的方法
          bindService () 把service 与调用者绑定 ,如果调用者被销毁, service会销毁。
          bindService().  让activity能够访问到 service里面的方法。
          //构建一个intent对象,
          Intentservice = new Intent(this,MyService.class);
         // 通过bindService的方法去启动一个服务,
            bindService(intent,new MyConn(), BIND_AUTO_CREATE);
            ServiceConnection对象(重写onServiceConnected和OnServiceDisconnected方法) 和BIND_AUTO_CREATE.
            privateclass myconn implements ServiceConnection {
                   publicvoid onServiceConnected(ComponentName name, IBinder service) {
                   //TODO Auto-generated method stub
                   //可以通过IBinder的对象 去使用service里面的方法
                    }
                    publicvoid onServiceDisconnected(ComponentName name) {
                    //TODO Auto-generated method stub
                    }
          }
13. 什么是Service以及描述下它的生命周期。Service有哪些启动方法,有什么区别,怎样停用Service?

          在Service的生命周期中,被回调的方法比Activity少一些,只有onCreate, onStart, onDestroy,onBindonUnbind
          通常有两种方式启动一个Service,他们对Service生命周期的影响是不一样的。

       1.通过startService
               Service会经历 onCreate 到onStart,然后处于运行状态,stopService的时候调用onDestroy方法。
               如果是调用者自己直接退出而没有调用stopService的话,Service会一直在后台运行。
      2 通过bindService   
            Service会运行onCreate,然后是调用onBind, 这个时候调用者和Service绑定在一起。调用者退出了,Srevice就会调用onUnbind- >onDestroyed方法。
          所谓绑定在一起就共存亡了。调用者也可以通过调用unbindService方法来停止服务,这时候Srevice就会调用onUnbind-   >onDestroyed方法。

          需要注意的是如果这几个方法交织在一起的话,会出现什么情况呢?
          一个原则是Service的onCreate的方法只会被调用一次,就是你无论多少次的startService又bindService,Service只被创建一次。
         
         如果先是bind了,那么start的时候就直接运行Service的onStart方法,如果先是start,那么bind的时候就直接运行onBind方法。
         
         如果service运行期间调用了bindService,这时候再调用stopService的话,service是不会调用onDestroy方法的,service就stop不掉了,只能调用UnbindService, service就会被销毁。
        
         如果一个service通过startService 被start之后,多次调用startService 的话,service会多次调用onStart方法。多次调用stopService的话,service只会调用一次onDestroyed方法。
         
         如果一个service通过bindService被start之后,多次调用bindService的话,service只会调用一次onBind方法。
         多次调用unbindService的话会抛出异常。

14. 不用service,B页面为音乐播放,从A跳转到B,再返回,如何使音乐继续播放?
        这个问题问的很山寨,默认不做任何处理,B里面的音乐都能播放。
       遇到问题, 可以随机应变,灵活发挥,多考虑些细节,比如说这个题就可以这样说,说说你对startActivityForResult的理解()。
       A开启B的时候,用startActivityForResult()方法, B返回的时候把播放的状态信息返回给A ,A继续播放音乐

15. 什么是IntentService?有何优点?
       普通的service ,默认运行在ui main 主线程。
       Sdk给我们提供的方便的,带有异步处理的service类,
       OnHandleIntent()处理耗时的操作。

其他精华资源推荐:



92 个回复

正序浏览
感谢感谢的6
回复 使用道具 举报
感谢楼主分享
回复 使用道具 举报
顶起来!
回复 使用道具 举报
加油!未来在自己手里
回复 使用道具 举报
每天保持好心情
回复 使用道具 举报
信。。。得永生啊啊啊啊啊啊啊啊啊
回复 使用道具 举报
啦啦啦啦啦啦啦阿拉啦啦啦啦
回复 使用道具 举报
不管咋样感谢
回复 使用道具 举报
谢楼主分享
回复 使用道具 举报
谢谢分享,楼楼辛苦啦
回复 使用道具 举报
感谢楼主分享,学习。。。,一起加油
回复 使用道具 举报
赞赞赞赞赞赞赞赞赞赞
回复 使用道具 举报
大家好好加油,努力挺过去,明天更好!!!
回复 使用道具 举报
键盘敲烂,月薪过万
回复 使用道具 举报
6666神典啊/
回复 使用道具 举报
谢谢分享
回复 使用道具 举报
大神们总是会分享这些营养大餐,感谢一路有你
回复 使用道具 举报
谢谢分享!
回复 使用道具 举报
天天过的很充实,这样的生活我很满意!!!!欧耶
回复 使用道具 举报
努力,努力,再努力!!
回复 使用道具 举报
12345下一页
您需要登录后才可以回帖 登录 | 加入黑马