Android中如何利用多线程重复启动与停止服务

Android中如何利用多线程重复启动与停止服务

今天小编给大家分享一下Android中如何利用多线程重复启动与停止服务的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

Android 多线程实现重复启动与停止的服务

Android中如何利用多线程重复启动与停止服务

多线程环境下为了避免死锁,一般提倡开放调用,开放调用可以避免死锁,它的代价是失去原子性。但是在有些时候会显得逻辑错误,

例如:

classA{privatebooleanmIsStarted;voidstart(){booleanchanged=false;synchronized(this){if(!mIsStarted){mIsStarted=true;changed=false;}if(changed){callBack.onStart();}}}booleanisStarted(){sychronized(this){returnmIstarted;}}voidstop(){booleanchanged=false;synchronized(this){if(mStarted){mStarted=false;changed=true;}}if(changed){callBack.onStop();}}}

在单线程环境下这个代码没有任何问题。可是在多线程环境就会出现奇怪的现象。

原则上讲, onStart 一定要走在onStop前面,可事实并非如此:

执行步骤如下:

线程1 start

线程2 stop

线程1

if(!mIsStarted){mIsStarted=true;changed=false;}

线程2

synchronized(this){if(mStarted){mStarted=false;changed=true;}}

以上就是“Android中如何利用多线程重复启动与停止服务”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注恰卡编程网行业资讯频道。

发布于 2022-04-11 21:18:12
收藏
分享
海报
0 条评论
34
上一篇:android中如何设置wallpaper 下一篇:Android中如何更改应用图标
目录

    推荐阅读

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码