Android活动和服务关系
我想知道Android服务和启动它的活动(在本例中,通过StartService()方法)之间的关系是什么 服务只是活动所属的同一进程中运行的另一个线程,还是它有自己的线程 我问的原因是b/c我使用的是一个SQLite DB,它将从活动和它启动的服务中访问,因此需要确定在它们之间同步DB访问的正确方法(利用SQLite内置的多线程支持,或者实现一些自制的进程间snycronization方法) 注意:我不是问如何同步访问,我只是想弄清楚我是从两个独立的进程还是从两个独立的线程访问数据库,这将决定我如何进行 注意:我是使用mono.Data.Sqlite在.net/mono中编写的,而不是原始的Android/Java 欢迎您提供任何见解,谢谢。网站上没有您的答案吗?它详细介绍了Android活动和服务关系,android,.net,multithreading,sqlite,mono,Android,.net,Multithreading,Sqlite,Mono,我想知道Android服务和启动它的活动(在本例中,通过StartService()方法)之间的关系是什么 服务只是活动所属的同一进程中运行的另一个线程,还是它有自己的线程 我问的原因是b/c我使用的是一个SQLite DB,它将从活动和它启动的服务中访问,因此需要确定在它们之间同步DB访问的正确方法(利用SQLite内置的多线程支持,或者实现一些自制的进程间snycronization方法) 注意:我不是问如何同步访问,我只是想弄清楚我是从两个独立的进程还是从两个独立的线程访问数据库,这将决定
服务
和活动
警告:服务在其宿主进程的主线程中运行
服务不创建自己的线程,也不在单独的线程中运行
过程(除非您另有规定)。这意味着,如果
服务将执行任何CPU密集型工作或阻塞操作
(如MP3播放或网络),您应该创建一个新线程
在服务范围内完成该工作。通过使用单独的线程,您可以
将降低应用程序不响应(ANR)错误和
应用程序的主线程可以保持专用于用户交互
与你的活动
我当时也在考虑把这张警告信抄到这里,它完全正确。感谢您关于接受的提示。这是一篇实现android服务的必读文章:对于决定在单独进程中运行服务的任何人,您应该看到并评论MonoDroid服务的问题,上面的评论地址已在4.2.4补丁中解决。