zoukankan      html  css  js  c++  java
  • 初学Android,创建,启动,停止Service(五十八)

    Service跟Windows系统里的服务概念差不多,都在后台执行,它跟Activity的最大区别就是,它是无界面的

    开发Service与开发Activity的步骤类似

    1.定义一个继承Service的子类

    2.在AndroidManifest.xml文件中配置该Service

    Service与Activity还有一点相似之处,它们都是从Context派生出来的,因此它们都可调用Context里定义的如getResources(),getContentResolver()等方法

    下面写一个简单的Service例子

    先定义一个Service类

    1. package WangLi.IO.FirstService;  
    2.   
    3. import android.app.Service;  
    4. import android.content.Intent;  
    5. import android.os.IBinder;  
    6.   
    7. public class FirstService extends Service {  
    8.     //必须实现的方法  
    9.     @Override  
    10.     public IBinder onBind(Intent intent) {  
    11.         // TODO Auto-generated method stub  
    12.         return null;  
    13.     }  
    14.   
    15.     //Service被创建时回调方法  
    16.     public void OnCreate()  
    17.     {  
    18.         super.onCreate();  
    19.         System.out.print("Service is Created");  
    20.     }  
    21.       
    22.     //Service启动时回调该方法  
    23.     public int onStartCommand(Intent intent,int flags,int startId)  
    24.     {  
    25.         System.out.println("Service is Started");  
    26.         return START_STICKY;  
    27.     }  
    28.       
    29.     //Service被关闭之前被回调  
    30.     public void onDestroy()  
    31.     {  
    32.         super.onDestroy();  
    33.         System.out.println("Service is Destroyed");  
    34.     }  
    35. }  

    上面几个关键方法都可以看到,Service的执行就在方法内写上相应的功能代码,在不同阶段执行

    Service跟Activity一样,也需要在AndroidManifest.xml文件中注册,注册配置配置<intent-filter.../>子元素,设置Service可被哪些Intent启动

    1. <service android:name="FirstService" >  
    2.     <intent-filter>  
    3.         <action android:name="WangLi.IO.First_Service"></action>//注意小必须要注册!!!!  
    4.     </intent-filter>  
    5. </service>  

    建一个界面类Activity,放上两个按钮,一个用来启动Service,一个用来停止Service

    1. package WangLi.IO.FirstService;  
    2.   
    3. import android.app.Activity;  
    4. import android.content.Intent;  
    5. import android.os.Bundle;  
    6. import android.view.View;  
    7. import android.view.View.OnClickListener;  
    8. import android.widget.Button;  
    9.   
    10. public class MainActivity extends Activity {  
    11.     Button start, stop;  
    12.   
    13.     @Override  
    14.     public void onCreate(Bundle savedInstanceState) {  
    15.         super.onCreate(savedInstanceState);  
    16.         setContentView(R.layout.main);  
    17.         // 获取界面上的start,stop两个按钮  
    18.         start = (Button) findViewById(R.id.start);  
    19.         stop = (Button) findViewById(R.id.stop);  
    20.         // 创建启动Service的Intent  
    21.         final Intent intent = new Intent();  
    22.         // 为Intent设置Action属性  
    23.         intent.setAction("WangLi.IO.First_Service");  
    24.         start.setOnClickListener(new OnClickListener() {  
    25.             @Override  
    26.             public void onClick(View arg0) {  
    27.                 // 启动指定Service  
    28.                 startService(intent);  
    29.             }  
    30.         });  
    31.         stop.setOnClickListener(new OnClickListener() {  
    32.             @Override  
    33.             public void onClick(View v) {  
    34.                 // 停止指定Service  
    35.                 stopService(intent);  
    36.             }  
    37.         });  
    38.     }  
    39. }  

    注意startService,和stopService这两个方法

    下面是程序界面


    下面logcat记录的Service启动和关闭过程


    此外,有一点值得注意,多次启动一个已有的Service组件将不会再调用onCreate方法,但每次启动时都会回调onStart方法

    注意:bindservice和startservice的启动对应的方法!

  • 相关阅读:
    转ANYTAO的学习方法
    第一次写文章
    分享一个有趣的学习方法,欢迎一起探讨如何提高学习兴趣
    SQL基础
    insert into 后获得自动插入的id(select @@identity)
    如何向ASP.NET Web 服务器控件添加客户端脚本事件
    关键字using的主要用途
    网页设计师必备的10个CSS技巧
    DataSet与DataReader的区别
    由于系统时间修改导致Oracle启动失败
  • 原文地址:https://www.cnblogs.com/sowhat4999/p/4439844.html
Copyright © 2011-2022 走看看