Android 中的 Service 全面总结

android通过oma获取ESE的CPLC 一个简单的通过oma获取ESE的CPLC的小程序,供大家参考只用 立即下载

Android 中的 Service 全面总结

1、Service的种类

  

按运行地点分类:

类别 区别  优点 缺点   应用
本地服务(Local) 该服务依附在主进程上,  服务依附在主进程上而不是独立的进程,这样在一定程度上节约了资源,另外Local服务因为是在同一进程因此不需要IPC,也不需要AIDL。相应bindService会方便很多。  主进程被Kill后,服务便会终止。  非常常见的应用如:HTC的音乐播放服务,天天动听音乐播放服务。
远程服务(Remote) 该服务是独立的进程,  服务为独立的进程,对应进程名格式为所在包名加上你指定的android:process字符串。由于是独立的进程,因此在Activity所在进程被Kill的时候,该服务依然在运行,不受其他进程影响,有利于为多个进程提供服务具有较高的灵活性。  该服务是独立的进程,会占用一定资源,并且使用AIDL进行IPC稍微麻烦一点。  一些提供系统服务的Service,这种Service是常驻的。

其实remote服务还是很少见的,并且一般都是系统服务。

  

按运行类型分类:

类别 区别 应用
前台服务 会在通知一栏显示 ONGOING 的 Notification, 当服务被终止的时候,通知一栏的 Notification 也会消失,这样对于用户有一定的通知作用。常见的如音乐播放服务。
后台服务 默认的服务即为后台服务,即不会在通知一栏显示 ONGOING 的 Notification。 当服务被终止的时候,用户是看不到效果的。某些不需要运行或终止提示的服务,如天气更新,日期同步,邮件同步等。

有同学可能会问,后台服务我们可以自己创建 ONGOING 的 Notification 这样就成为前台服务吗?答案是否定的,前台服务是在做了上述工作之后需要调用 startForeground ( android 2.0 及其以后版本 )或 setForeground (android 2.0 以前的版本)使服务成为 前台服务。这样做的好处在于,当服务被外部强制终止掉的时候,ONGOING 的 Notification 任然会移除掉。

 

按使用方式分类:

类别 区别
startService 启动的服务 主要用于启动一个服务执行后台任务,不进行通信。停止服务使用stopService
bindService 启动的服务 该方法启动的服务要进行通信。停止服务使用unbindService
startService 同时也 bindService 启动的服务 停止服务应同时使用stepService与unbindService

以上面三种方式启动的服务其生命周期也有区别,将在随后给出。

 

2、Service 与 Thread 的区别

  

很多时候,你可能会问,为什么要用 Service,而不用 Thread 呢,因为用 Thread 是很方便的,比起 Service 也方便多了,下面我详细的来解释一下。

 

1). Thread:Thread 是程序执行的最小单元,它是分配CPU的基本单位。可以用 Thread 来执行一些异步的操作。

2). Service:Service 是android的一种机制,当它运行的时候如果是Local Service,那么对应的 Service 是运行在主进程的 main 线程上的。如:onCreate,onStart 这些函数在被系统调用的时候都是在主进程的 main 线程上运行的。如果是Remote Service,那么对应的 Service 则是运行在独立进程的 main 线程上。因此请不要把 Service 理解成线程,它跟线程半毛钱的关系都没有!

  

既然这样,那么我们为什么要用 Service 呢?其实这跟 android 的系统机制有关,我们先拿 Thread 来说。Thread 的运行是独立于 Activity 的,也就是说当一个 Activity 被 finish 之后,如果你没有主动停止 Thread 或者 Thread 里的run 方法没有执行完毕的话,Thread 也会一直执行。因此这里会出现一个问题:当 Activity 被 finish 之后,你不再持有该 Thread 的引用。另一方面,你没有办法在不同的 Activity 中对同一 Thread 进行控制。

  

举个例子:如果你的 Thread 需要不停地隔一段时间就要连接服务器做某种同步的话,该 Thread 需要在 Activity 没有start的时候也在运行。这个时候当你 start 一个 Activity 就没有办法在该 Activity 里面控制之前创建的 Thread。因此你便需要创建并启动一个 Service ,在 Service 里面创建、运行并控制该 Thread,这样便解决了该问题(因为任何 Activity 都可以控制同一 Service,而系统也只会创建一个对应 Service 的实例)。

  

因此你可以把 Service 想象成一种消息服务,而你可以在任何有 Context 的地方调用 Context.startService、Context.stopService、Context.bindService,Context.unbindService,来控制它,你也可以在 Service 里注册 BroadcastReceiver,在其他地方通过发送 broadcast 来控制它,当然这些都是 Thread 做不到的。

  

3、Service的生命周期

 

onCreate  onStart  onDestroy  onBind 

1). 被启动的服务的生命周期:如果一个Service被某个Activity 调用 Context.startService 方法启动,那么不管是否有Activity使用bindService绑定或unbindService解除绑定到该Service,该Service都在后台运行。如果一个Service被startService 方法多次启动,那么onCreate方法只会调用一次,onStart将会被调用多次(对应调用startService的次数),并且系统只会创建Service的一个实例(因此你应该知道只需要一次stopService调用)。该Service将会一直在后台运行,而不管对应程序的Activity是否在运行,直到被调用stopService,或自身的stopSelf方法。当然如果系统资源不足,android系统也可能结束服务。

 

2). 被绑定的服务的生命周期:如果一个Service被某个Activity 调用 Context.bindService 方法绑定启动,不管调用 bindService 调用几次,onCreate方法都只会调用一次,同时onStart方法始终不会被调用。当连接建立之后,Service将会一直运行,除非调用Context.unbindService 断开连接或者之前调用bindService 的 Context 不存在了(如Activity被finish的时候),系统将会自动停止Service,对应onDestroy将被调用。

 

3). 被启动又被绑定的服务的生命周期:如果一个Service又被启动又被绑定,则该Service将会一直在后台运行。并且不管如何调用,onCreate始终只会调用一次,对应startService调用多少次,Service的onStart便会调用多少次。调用unbindService将不会停止Service,而必须调用 stopService 或 Service的 stopSelf 来停止服务。

 

4). 当服务被停止时清除服务:当一个Service被终止(1、调用stopService;2、调用stopSelf;3、不再有绑定的连接(没有被启动))时,onDestroy方法将会被调用,在这里你应当做一些清除工作,如停止在Service中创建并运行的线程。

 

特别注意:

1、你应当知道在调用 bindService 绑定到Service的时候,你就应当保证在某处调用 unbindService 解除绑定(尽管 Activity 被 finish 的时候绑定会自      动解除,并且Service会自动停止);

2、你应当注意 使用 startService 启动服务之后,一定要使用 stopService停止服务,不管你是否使用bindService; 

3、同时使用 startService 与 bindService 要注意到,Service 的终止,需要unbindService与stopService同时调用,才能终止 Service,不管 startService 与 bindService 的调用顺序,如果先调用 unbindService 此时服务不会自动终止,再调用 stopService 之后服务才会停止,如果先调用 stopService 此时服务也不会终止,而再调用 unbindService 或者 之前调用 bindService 的 Context 不存在了(如Activity 被 finish 的时候)之后服务才会自动停止;

4、当在旋转手机屏幕的时候,当手机屏幕在“横”“竖”变换时,此时如果你的 Activity 如果会自动旋转的话,旋转其实是 Activity 的重新创建,因此旋转之前的使用 bindService 建立的连接便会断开(Context 不存在了),对应服务的生命周期与上述相同。

5、在 sdk 2.0 及其以后的版本中,对应的 onStart 已经被否决变为了 onStartCommand,不过之前的 onStart 任然有效。这意味着,如果你开发的应用程序用的 sdk 为 2.0 及其以后的版本,那么你应当使用 onStartCommand 而不是 onStart。

 

4、startService 启动服务

  

想要用 startService  启动服务,不管Local 还是 Remote 我们需要做的工作都是一样简单。当然要记得在 Androidmanifest.xml 中注册 service。

根据上面的生命周期,我们便会给出 Service 中的代码框架:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package  com.newcj.test;
 
import  android.app.Service;
import  android.content.Intent;
import  android.os.IBinder;
 
public  class  LocalService1 extends  Service {
 
     /**
      * onBind 是 Service 的虚方法,因此我们不得不实现它。
      * 返回 null,表示客服端不能建立到此服务的连接。
      */
     @Override
     public  IBinder onBind(Intent intent) {
         return  null ;
     }
     
     @Override
     public  void  onCreate() {
         super .onCreate();
     }
     
     @Override
     public  void  onStart(Intent intent, int  startId) {
         super .onStart(intent, startId);
     }
     
     @Override
     public  void  onDestroy() {
         super .onDestroy();
     }
 
}

对应生命周期系统回调函数上面已经说明,在对应地方加上适当的代码即可。下面是启动与停止 Service 的代码:

对应的 Intent 为标志服务类的 Intent。

 

5、Local 与 Remote 服务绑定

 

同样记得在 Androidmanifest.xml 中注册 service

1). Local 服务绑定:Local 服务的绑定较简单,首先在 Service 中我们需要实现 Service 的抽象方法 onBind,并返回一个实现 IBinder 接口的对象。

Service 中的代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package  com.newcj.test;
 
import  android.app.Service;
import  android.content.Intent;
import  android.os.Binder;
import  android.os.IBinder;
 
public  class  LocalService extends  Service {
 
     /**
      * 在 Local Service 中我们直接继承 Binder 而不是 IBinder,因为 Binder 实现了 IBinder 接口,这样我们可以少做很多工作。
      * @author newcj
      */
     public  class  SimpleBinder extends  Binder{
         /**
          * 获取 Service 实例
          * @return
          */
         public  LocalService getService(){
             return  LocalService. this ;
         }
         
         public  int  add( int  a, int  b){
             return  a + b;
         }
     }
     
     public  SimpleBinder sBinder;
     
     @Override
     public  void  onCreate() {
         super .onCreate();
         // 创建 SimpleBinder
         sBinder = new  SimpleBinder();
     }
     
     @Override
     public  IBinder onBind(Intent intent) {
         // 返回 SimpleBinder 对象
         return  sBinder;
     }
 
}

上面的代码关键之处,在于 onBind(Intent) 这个方法 返回了一个实现了 IBinder 接口的对象,这个对象将用于绑定Service 的 Activity 与 Local Service 通信。下面是 Activity 中的代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package  com.newcj.test;
 
import  android.app.Activity;
import  android.content.ComponentName;
import  android.content.Context;
import  android.content.Intent;
import  android.content.ServiceConnection;
import  android.os.Bundle;
import  android.os.IBinder;
import  android.util.Log;
import  android.view.View;
import  android.view.View.OnClickListener;
 
public  class  Main extends  Activity {
     private  final  static  String TAG = "SERVICE_TEST" ;
     private  ServiceConnection sc;
     private  boolean  isBind;
 
     @Override
     public  void  onCreate(Bundle savedInstanceState) {
         super .onCreate(savedInstanceState);
         setContentView(R.layout.main);
         sc = new  ServiceConnection() {
             
             @Override
             public  void  onServiceDisconnected(ComponentName name) {
 
             }
             
             @Override
             public  void  onServiceConnected(ComponentName name, IBinder service) {
                 LocalService.SimpleBinder sBinder = (LocalService.SimpleBinder)service;
                 Log.v(TAG, "3 + 5 = "  + sBinder.add( 3 , 5 ));
                 Log.v(TAG, sBinder.getService().toString());
             }
         };
         findViewById(R.id.btnBind).setOnClickListener( new  OnClickListener() {
             
             @Override
             public  void  onClick(View v) {
                 bindService( new  Intent(Main. this , LocalService. class ), sc, Context.BIND_AUTO_CREATE);
                 isBind = true ;
             }
         });
         findViewById(R.id.btnUnbind).setOnClickListener( new  OnClickListener() {
             
             @Override
             public  void  onClick(View v) {
                 if (isBind){
                     unbindService(sc);
                     isBind = false ;
                 }
             }
         });
     }
}

在 Activity 中,我们通过 ServiceConnection 接口来取得建立连接 与 连接意外丢失的回调。bindService有三个参数,第一个是用于区分 Service 的Intent 与 startService 中的 Intent 一致,第二个是实现了 ServiceConnection 接口的对象,最后一个是 flag 标志位。有两个flag,BIND_DEBUG_UNBIND 与 BIND_AUTO_CREATE,前者用于调试(详细内容可以查看javadoc 上面描述的很清楚),后者默认使用。unbindService 解除绑定,参数则为之前创建的 ServiceConnection 接口对象。另外,多次调用 unbindService 来释放相同的连接会抛出异常,因此我创建了一个 boolean 变量来判断是否 unbindService 已经被调用过。

运行结果:

 

2). Remote 服务绑定:Remote 的服务绑定由于服务是在另外一个进程,因此需要用到 android 的 IPC 机制。这将又是一个很长的话题,因此,我打算写另外一篇 android 的 IPC 机制分析 ,并在其中进行详述,然后在这里更新链接,敬请关注。

 

特别注意:

1、Service.onBind如果返回null,则调用 bindService 会启动 Service,但不会连接上 Service,因此 ServiceConnection.onServiceConnected 不会被调用,但你任然需要使用 unbindService 函数断开它,这样 Service 才会停止。

 

 6、创建前台服务

  

前台服务的优点上面已经说明,但设置服务为前台服务,我们需要注意在 sdk 2.0 及其以后版本使用的方法是 startForeground 与 stopForeground,之前版本使用的是 setForeground ,因此如果你应用程序的最低运行环境要求是 2.0,那么这里可以直接运用新方法,如果运行环境是2.0以下,那么为了保证向后兼容性,这里必须使用反射技术来调用新方法。

下面是我仿照 ApiDemos 重新敲的代码,对某些地方进行了修改,因此更具有说明性:

特别注意:

  1、使用 startForeground ,如果 id 为 0 ,那么 notification 将不会显示。

  

7、在什么情况下使用 startService 或 bindService 或 同时使用startService 和 bindService

  

如果你只是想要启动一个后台服务长期进行某项任务那么使用 startService 便可以了。如果你想要与正在运行的 Service 取得联系,那么有两种方法,一种是使用 broadcast ,另外是使用 bindService ,前者的缺点是如果交流较为频繁,容易造成性能上的问题,并且 BroadcastReceiver 本身执行代码的时间是很短的(也许执行到一半,后面的代码便不会执行),而后者则没有这些问题,因此我们肯定选择使用 bindService(这个时候你便同时在使用 startService 和 bindService 了,这在 Activity 中更新 Service 的某些运行状态是相当有用的)。另外如果你的服务只是公开一个远程接口,供连接上的客服端(android 的 Service 是C/S架构)远程调用执行方法。这个时候你可以不让服务一开始就运行,而只用 bindService ,这样在第一次 bindService 的时候才会创建服务的实例运行它,这会节约很多系统资源,特别是如果你的服务是Remote Service,那么该效果会越明显(当然在 Service 创建的时候会花去一定时间,你应当注意到这点)。

  

 

8、在 AndroidManifest.xml 里 Service 元素的常见选项

android:name  -------------  服务类名

android:label  --------------  服务的名字,如果此项不设置,那么默认显示的服务名则为类名

android:icon  --------------  服务的图标

android:permission  -------  申明此服务的权限,这意味着只有提供了该权限的应用才能控制或连接此服务

android:process  ----------  表示该服务是否运行在另外一个进程,如果设置了此项,那么将会在包名后面加上这段字符串表示另一进程的名字

android:enabled  ----------  如果此项设置为 true,那么 Service 将会默认被系统启动,不设置默认此项为 false

android:exported  ---------  表示该服务是否能够被其他应用程序所控制或连接,不设置默认此项为 false



----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

/*===============================================================

高端超廉价手机产品(三星S3, S4, 苹果iPhone5, 4S,应有尽有) - www.99shuma.net

================================================================*/


cadence中利用sva进行FPV实战(可直接使用) 在cadence中使用fpv进行formal验证 阅读详情

相关推荐

2024高项范文-论项目成本管理

例如,在需求分析和设计阶段,安排了较多经验丰富的人员,确保基础工作的高质量完成,同时也避免了后续因需求变更等问题导致的时间和成本浪费。虽然项目进度略有延迟,但通过有效的成本管理和调整,最终在可控的成本范围内完成了项目,并且软件的质量也得到了保障。通过这个案例可以看出,在项目成本管理过程中,要紧密结合时间管理,根据实际情况灵活调整策略,注重风险的防范和应对,才能实现时间和成本的平衡,确保项目的成功。资源规划是成本基准形成的基础。识别和评估项目中的成本风险,并制定相应的应对措施,以降低风险对项目成本的影响。

xjflion的博客 1188

AI论文格式优化工具:智能排版与一键合规

文档格式处理是学术写作中的常见痛点,涉及排版规范、标点符号、参考文献等多个技术细节。传统方法依赖人工逐项调整,效率低下且易出错。通过NLP和深度学习技术,智能排版工具能自动识别中英文混排错误、标点符号误用等格式问题,并基于CSS-in-JS和差分算法实现精准修改。这类工具特别适合处理学位论文、期刊投稿等需要严格遵循格式规范的场景,能显著提升写作效率。以Paperxie AI为例,其智能诊断系统可检测98.7%的中文标点错误,并提供一键合规改造功能,有效解决页眉页脚不统一、目录页码错位等典型问题。

weixin_33701564的博客 498

FunASR与FreeSWITCH融合实战:从零构建高精度语音质检系统

本文详细介绍了如何将FunASR与FreeSWITCH融合,构建高精度语音质检系统。通过实时语音听写技术,结合热词定制和多模型切换,实现客服中心等场景的自动化质检,显著提升识别准确率和效率。系统架构涵盖音频采集、识别处理和业务应用三层,支持负载均衡和性能优化,适用于工业级部署。

weixin_29198045的博客 980

android访问NFC的SE

SE:Secure Element 分享一个网址:https://code.google.com/p/seek-for-android/ android访问NFC的SE所有文档都在这里。 可惜的是,目前只能访问内部SE,对于外部sim或SD的SE,几乎所有的手机都不支持,原因:支持SIM卡的SE,还没有AT命令;支持SD卡的SE,还没有API接口。为什么会这样,很简单,因为它们不是googl

I feel so close to you right now! 8885

【随机过程】第二章——随机过程概论

随机过程概论,说明《随机过程》课程的教学大纲,对随机过程概念、研究对象和研究方法做了简要介绍。

weixin_45225032的博客 1363

深入解析ADC采样电容:从充电误差到LSB精度的关键设计

本文深入解析了ADC采样电容在模数转换中的核心作用,重点探讨了充电时间常数与采样误差的博弈关系。通过推导最小采样时间公式,揭示了精度、速度、源阻抗与内部电容之间的制约关系,并提供了从理论计算到外部驱动电路设计的实战指南,是确保ADC达到LSB精度的关键。

android的专栏 1103

android Sevice详解

写了这么久代码了,每次到写服务的时候总会忘记怎么写,那我就把你记到这里,这下忘记了就不会到处翻别人的博客了。 先上图,有图有真相,先上从别人那里盗来的生命周期图 启动服务用三种方式: 1,startService 2,bindService 3,startService和bindService连用 各个模式的区别 1,startService启动的生命周期 onCreate

xiaoke804376088的博客 723

esp32c6 开发实战:低功耗蓝牙(BLE)开发

蓝牙栈在此程序流程中已经启动并运行,但是应用程序的功能尚未定义。功能的定义是通过响应事件来实现的,当其他设备尝试读取或写入参数以及建立连接时就会触发事件回调函数处理。BT控制器在控制器端实现主机控制器接口(HCI),链路层(LL)和物理层(PHY)。BT控制器对用户应用程序不可见,并处理BLE堆栈的较低层。蓝牙堆栈(Bluedroid stack)定义了经典蓝牙(BT Classic)和低功耗蓝牙(BLE)的通用定义和API。的判断)等对于启动低功耗蓝牙来说不重要的代码,函数初始化和启用BT控制器。

月入鱼饵的博客 2740

Android四大组件之service

原文:https://blog.csdn.net/javazejian/article/details/52709857 ,详细了解的童鞋可以看这篇原文,写的很棒! 1.Service简单概述   Service(服务)是一个一种可以在后台执行长时间运行操作而没有用户界面的应用组件。服务可由其他应用组件启动(如Activity),服务一旦被启动将在后台一直运行,即使启动服务的组件(Activit...

choies的博客 261

用Verilog手把手教你搭建一个5级流水线的MIPS CPU(附完整代码与仿真)

本文详细介绍了如何使用Verilog从零构建一个5级流水线的MIPS处理器,包括开发环境配置、核心模块实现、流水线冲突处理等关键技术。通过完整的代码示例和仿真方法,帮助读者掌握CPU设计的基本原理和实践技巧,特别适合想要入门处理器设计的工程师和学习者。

weixin_30613727的博客 461

Jetson AGX Orin和Drive AGX Orin相机的关联分析和编程指南

通过适当的相机接口和连接,以及使用适当的软件开发环境,开发人员可以在这些平台上实现相机功能。Jetson AGX Orin和Drive AGX Orin是NVIDIA推出的两款强大的计算平台,用于自动驾驶和人工智能应用。Jetson AGX Orin和Drive AGX Orin平台提供了强大的计算能力,使开发人员能够实现复杂的相机功能和算法。以上只是一些示例,Jetson AGX Orin和Drive AGX Orin平台提供了丰富的开发资源和工具,可用于实现各种复杂的相机应用。显示图像在一个窗口中。

CyberLynxO的博客 1119

安装SQL Server 2000程序配置服务器失败

机子之前有装了SQL Server 2000,而且可以正常使用,只是今天突然无法连接到本地数据库,打算重装,我删了program files里的ms sql的目录,然后重装sql,结果在最后一步的时候提示,无法完成配置。后来又删除了一些注册表中的sql server信息(有备份注表),再安装时,就出现这样的提示了,更糟的是,备份的注册表却无法还原 =========================

tonghua_123的专栏 3051

杰理SDK入门教程(六):自定义按键事件

这篇教程介绍了在杰理AC695N芯片上实现自定义按键功能的完整流程,包含三个核心步骤:首先在key_event_deal.h文件中添加按键枚举定义;然后在adkey_table.c配置按键映射表,按模式和行为类型设置按键值;最后在app_common.c的消息处理函数中添加自定义按键逻辑。教程强调需注意不同模式按键表的列定义差异,并提供了具体代码示例,最后指导完成编译测试验证。全文结构清晰,配有关键代码截图,适合开发者快速上手自定义按键功能开发。

qq_42014563的博客 1016

如何解决 SQL Server 2000 中的连接问题

如何解决 SQL Server 2000 中的连接问题适用于 重要说明:本文包含有关修改注册表的信息。修改注册表之前,一定要备份注册表,并且一定要知道在发生问题时如何还原注册表。有关如何备份、还原和编辑注册表的信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 256986 Microsoft Windows 注册表说明本任务的内容概要 解决连接问

Stay Hungry || Stay Foolish 2839

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Sql Server 2000安装故障解决方法提示

系统描述:windows 2000 ADV Server English Edition(正版)Sql server 2000 Standard Edition (English正版)MDAC 2.8 (中文)重装系统后安装SQL 2000 SERVER,遇到一个问题,网上的解决方案不一,现将我的解决流程书写如下:关键错误日志如下:#################################

Jresins的专栏 4380

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

此计算机上未安装sql2000,MDAC及SQL SERVER 2000安装失败的原因及解决方法

当安装时出现MDAC组件安装失败时,试着修复或重装microsoftoffice当你想重装sqlserver,而安装时又出现“您的机子上已经安装有一个实例”的提示时,可以删除programfiles\Microsoft SQL Server文件夹,再安装当出现某某动态链接文件找不到时,可以试着在sqlserver的安装文件中找到这个文件,复制到系统目录下的system和system32文件夹中(一...

weixin_32841641的博客 1424

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

SQL server安装失败解决办法

解决方案一(由 leeboyan(★★宝宝★★) 提供):先把SQL  Server卸载,再把安装时产生的“Microsoft  SQL  Server”文件夹删掉,在运行注册表,把HKEY_CURRENT_USER/Software/Microsoft/Microsoft  SQL  Server,和HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft 

流落街头(蜗牛) 1万+

[Microsoft][ODBC SQL Server Driver ]超时已过期的解决过程和方法

环境:     OS:  window2000 server         Database:  Sql Server 2000 中文企业版 +sp4        客户和服务均在一台机上运行。      客户的管理系统在正常运行近一个月后出现“[ODBC SQL server dirvier] 超时已过期”错误,甚至无法再次登陆数据库。由于系统曾正常运行过一段时间,因此我认

liuhd2009的专栏 1万+

sql2000安装失败的解决方法

sql2000安装失败的解决方法1.安装sql的时候,如果出现以前有挂起的文件。或者安装后期出配置服务器失败。那么可以通过如下方法解决。一.找到下面的注册表项目删除之(注意。一定要先对注册表进行一个备份)HKLM/SOFTWARE/Microsoft/Windows/CurrentVersion/Setup/ExceptionComponentsHKLM/SOFTWAR

蓝昊天——.net之旅 7285

SQL Server安装出错:安装程序配置服务器失败的解决方法 [转]

机子之前有装了SQL Server 2000,而且可以正常使用,只是今天突然无法连接到本地数据库,打算重装,我删了program files里的ms sql的目录,然后重装sql,结果在最后一步的时候提示,无法完成配置。后来又删除了一些注册表中的sql server信息(有备份注表),再安装时,就出现这样的提示了,更糟的是,备份的注册表却无法还原 ===================...

dengxiajuan5846的博客 446

SQL Server 2000 企业管理器打开空白 【完整解决方案,100% 解决】

SQL2000 企业管理器打开空白,管理员权限修复 MDAC 组件 + SQL 组件 → 重启电脑(90% 解决);删除损坏的 MSC 配置文件 → 重建管理单元(100% 解决剩余问题);启动 SQL 服务 + 设置兼容性 + 管理员运行(补充兜底)。这个问题是 SQL2000 的通病,所有 Windows 新版本系统都会遇到,以上方法是经过十几年验证的标准答案,按步骤来绝对能解决,放心操作即可!

a65gg4123b的博客 1112

sql安装出错,安装程序配置服务器失败的解决方案 [转]

sql安装出错,安装程序配置服务器失败的解决方案 http://liqiangit520.blog.163.com/blog/static/1207289420075594636741/>sql server 2000安装出错,无法找到动态链接库sqlunirl.dll 安装文件肯定没有错,因为以前安装过,绝对可以用机子之前有装了sql server 2000,而且可以正常

lvxiao061的专栏 2666

SQL Server 2000 基础(1)——安装

一、SQL SERVER 2000安装时常见问题1、配置服务器时中断;2、注册ActiveX 时中断;3、显示到%的时候中断;4、提示:command line option syntax error, type command /? for help,继续安装,最后在配置服务器的时候出现:无法找到动态链接SQLUNIRL.DLL于指定的路径……5、以前进行的程序创建了挂起的文

张骞 1673

SQL Server2000安装错误解决方法

一、出现“配置服务器失败,请参考系统日志说明”和安装过程进度条退回    如果是windows xp的系统,可以在C:/WINDOWS目录下查看sqlstp.log文件,里面有错误信息,敝人曾碰到过几种情况,参考了部分网络资料,现整理如下: 失败情况一: sqlstp.log文件中的错误信息: 正在与服务?               driver={sql server};server=ZH

wsquid__Space 1941

SQL2000无法安装的解决办法

注意:Windows Xp是无法安装SQL 2000企业版的,可以安装个人版或者开发者版1、将Program   files下的SQL安装目录删除(此处如果有重要的数据,请先备份) C:/Program   Files/Microsoft   SQL   Server/80/Tools。   C:/Program   Files/Microsoft   SQL   Server/MSSQL。

ourteam的专栏 1029

sql2000 安装提示服务控制操作失败:5_SQL Server 2008 R2 的安装

一、安装前的准备 1、需要.Net Framework 3.5,在SQL Server 2008 R2安装的前会自动更新安装 2、需要Widnows PowerShell的支持,WPS是一个功能非常强大的Shell应用,命令与DOX/UNIX兼容并支持直接调用.NET模块做行命令编辑,是非常值得深入研究的工具(在SQL2008 R2安装时会自动更新安装) 3、需要确保Windows Inst...

weixin_42402241的博客 1119
上一篇: android service生命周期
下一篇: Dalvik虚拟机进程和线程的创建过程分析
flymachine
博客等级 码龄23年 253粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值