最近都在使用ContentProvider来开发,一般我们把CP的提供者叫做client端,CP的访问者叫做server端,开发中的需求是server端通过CP向client下达指令,让client退出,由于需求没有说明是否要正常退出,所以我就干脆的让client端的应用程序强制退出。
System.exit(0);
但是测试的时候出现了一个问题,当指令通过CP传输到client端以后,执行System.exit(0)
代码以后,client端进程退出,同时server端的进程也跟着退出了。
查阅了好多资料都说,这样的情况要通过源码来找解决办法了,此时抱着试试看的态度试了一下开线程退出,真的实现了,如下:
new Thread(new Runnable() {
@Override
public void run() {
System.exit(0);
}
}).start();
没错,就是把在Provider中的call
方法中开子线程然后执行退出代码,当然在其他的几个增删改查中也可以,这样server端的进程就不会退出了。
在我之前的文章ContentProvider之线程中,我做过测试,Provider中要覆写的几个方法,除了onCreate的方法是运行在主线程的,其他几个基本上都是在子线程中的,call
方法当然也是运行在子线程中,但是为什么在子线程中再开线程执行强制退出代码就解决了这个问题,我也不太清楚,有清楚的同学想留言告知,多谢。
最后,如果还有什么问题也可以通过公众号加我微信。公众号主要是我平时的一些读书感悟、投资成长,欢迎你的关注,我们一起进步。
<