Android Service与Runnable整合并用

http://www.360doc.com/content/12/0209/15/3700464_185309016.shtml


服务的启动没有Activity,即便是利用Activity带起服务,也会有各看成独立的事件及焦点要处理。

Service继承自Android.app.Service。

服务的生态链就先从onCreate()开始(如果有重写的话) ,接着应会进入启动服务onStart(),默认继承的Service类,并不一定要有onStart(),但是一定要重写public IBinder onBind(Intent intent)方法。

 package cn.iimob;


import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public  class demo extends Activity {
     private Button btnStartService,btnStopService;
     /* * Called when the activity is first created.  */
    @Override
     public  void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        btnStartService=(Button)findViewById(R.id.btnStartService);
        btnStopService=(Button)findViewById(R.id.btnStopService);
        btnStartService.setOnClickListener( new Button.OnClickListener() {
            @Override
             public  void onClick(View v) {
                 // 构建 Intent 对象,指定打开对象为 MyService服务
                Intent i= new Intent(demo. this, MyService. class);
                 // 设置新Task的方式
                i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                 // 以startService 方法启动 Intent
                startService(i);
            }
        });
        btnStopService.setOnClickListener( new Button.OnClickListener() {
            
            @Override
             public  void onClick(View v) {
                 //  构建 Intent对象,指定关闭的对象为MyService服务
                Intent i= new Intent(demo. this, MyService. class);
                
                 // 以stopService 方法关闭 Intent
                stopService(i);
            }
        });
    }
}

 package cn.iimob;


import android.app.Service;
import android.content.Intent;
import android.os.Handler;
import android.os.IBinder;
import android.util.Log;

/**
 * 
 *  @Project       : servicedemo
 *  @Program Name  : cn.iimob.MyService.java
 *  @Class Name    : MyService
 *  @Description   : 自定义 MyService 类继承 Service 类
 *  @Author        : zh
 *  @Creation Date : 2011-11-3 上午09:49:00 
 *  @ModificationHistory  
 *  Who        When          What 
 *  --------   ----------    -----------------------------------
 *  username   2011-11-3       TODO
 
*/
public  class MyService  extends Service {

     /**
     * 创建 Handler 对象,作为进程 传递 postDelayed 之用
     
*/
     private Handler myhandler =  new Handler();
    
     /**
     * 为了确认系统服务运行情况
     
*/
     private  int intCounter=0;
    
     /**
     * 成员变量 myTasks为Runnable对象,作为Timer之用
     
*/
     private Runnable myTasks= new Runnable() {
         /**
         * 进程运行
         
*/
        @Override
         public  void run() {
             //  TODO Auto-generated method stub
            
// 递增counter整数,作为后台服务运行时间识别
            intCounter++;
             // 以Log 对象在LogCat 里输出Log信息,监看服务运行情况
            Log.i("Run Service", "Counter:"+Integer.toString(intCounter));
            myhandler.postDelayed(myTasks, 1000);
        }
    };
    
    @Override
     public IBinder onBind(Intent intent) {
         return  null;
    }
    
    @Override
     public  void onStart(Intent intent, int startId){
        myhandler.postDelayed(myTasks, 1000);
         super.onStart(intent, startId);
        Log.i("Start Service", "onStart");
    }
    
    @Override
     public  void onCreate(){
         super.onCreate();
        Log.i("Create Service", "onCreate");
    }
    
    @Override
     public  void onDestroy(){
         // 当服务结束,删除 mTasks 运行线程 
        myhandler.removeCallbacks(myTasks);
         super.onDestroy();
        Log.i("Destroy Service", "onDestroy");
    }
    
    
}

 

 <?xml version="1.0" encoding="utf-8"?>

< LinearLayout  xmlns:android ="http://schemas.android.com/apk/res/android"
    android:orientation
="vertical"
    android:layout_width
="fill_parent"
    android:layout_height
="fill_parent"
    
>
< TextView  
    
android:layout_width ="fill_parent"  
    android:layout_height
="wrap_content"  
    android:text
="@string/hello"
    
/>
< Button
android:text
="开始Service"
android:id
="@+id/btnStartService"
android:layout_width
="wrap_content"
android:layout_height
="wrap_content" >
</
Button >

< Button
android:text
="终止Service"
android:id
="@+id/btnStopService"
android:layout_width
="wrap_content"
android:layout_height
="wrap_content" ></ Button >
</ LinearLayout >

 

 <?xml version="1.0" encoding="utf-8"?>

< manifest  xmlns:android ="http://schemas.android.com/apk/res/android"
      package
="cn.iimob"
      android:versionCode
="1"
      android:versionName
="1.0" >
     < application  android:icon ="@drawable/icon"  android:label ="@string/app_name" >
         < activity  android:name =".demo"
                  android:label
="@string/app_name" >
             < intent-filter >
                 < action  android:name ="android.intent.action.MAIN"   />
                 < category  android:name ="android.intent.category.LAUNCHER"   />
             </ intent-filter >
         </ activity >
         <!--  创建 Service,给予类的名称   -->
         <!--  创建 android:exported属情为true,表示此服务可被其他程序访问   -->
         < service  android:name =".MyService"  android:exported ="true"  android:process =":remote" ></ service >
     </ application >
     < uses-sdk  android:minSdkVersion ="8"   />

</ manifest > 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值