Intentservice自己的一点感受关于java.lang.NullPointerException

自己呢是一个新手,很多java的书都读了,最近在尝试自己写程序,写的是一个手机与手机护发消息的,现在手机与pc上测试,在手机上写service侦听端口的时候,想到如果不再开辟线程的后,会阻塞uI线程,所以采用intentservice

  在用intentservice时,一直碰到的问题是startservice(intent)传进去的参数是空指针,可是明明实例化的,又参阅androidAPI,

intentservice 运行时  先调用OnCreat() 然后再是OnStartCommand 再是OnHandlerIntent  在调用了OnStartCommand时 可能会由于重启service 造成intent失效,需要对重载的OnStartCommand flag参数进行设置。

 而我造成NUllPointException这个原因是因为忘了重载OnCreat函数,导致Intent失效。自己debug多次,都发现在没有Oncreat的情况下,OnstartCommand均能正确执行,得到正确Intent,但在执行OnHandlerIntent时 Intent为NUll

还需要注意一点 IntentService的构造函数要是不含参的

以上呢 是这两天对IntentService的一点小心得

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
IntentService是Android中的一个特殊Service,它主要用于在后台执行异步任务,处理Intent请求,并在任务完成后自动停止。 以下是IntentService的几个优点: 1. 简化了异步任务的处理:IntentService封装了异步任务的处理逻辑,使得开发者可以更加专注于实现具体的任务逻辑,而无需关注线程管理和任务调度等细节。它通过创建一个单独的工作线程来处理任务,避免了在主线程中执行耗时操作导致的ANR(Application Not Responding)问题。 2. 自动停止:IntentService在任务执行完成后会自动停止,无需手动调用stopSelf()方法来停止Service。这样可以避免Service长时间运行而消耗系统资源。 3. 顺序执行:IntentService会按照任务的顺序依次处理Intent请求,确保每个Intent请求都能被正确处理。每次处理一个Intent请求时,它会将其他Intent请求放入队列中等待处理,保证了任务的顺序性。 4. 线程安全:IntentService内部使用单个工作线程来处理任务,因此避免了多线程并发访问的问题。这样可以简化任务的编写,并减少并发导致的竞态条件和同步问题。 5. 可以与其他组件进行通信:IntentService可以通过广播、回调或发送消息等方式与其他组件进行通信,便于任务的状态更新、结果的传递等。 需要注意的是,IntentService适用于执行一系列相对独立的任务,每个任务都是通过Intent进行触发和处理的。如果需要执行长时间运行的任务或与UI交互的任务,可能需要考虑其他方式,如使用HandlerThread或AsyncTask等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值