博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android Service与Runnable整合并用
阅读量:6850 次
发布时间:2019-06-26

本文共 4216 字,大约阅读时间需要 14 分钟。

服务的启动没有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
> 

转载地址:http://strul.baihongyu.com/

你可能感兴趣的文章
javascript 图片上传缩略图预览
查看>>
Java Service Wrapper使用总结
查看>>
Java:concurrent包下面的Map接口框架图(ConcurrentMap接口、ConcurrentHashMap实现类)...
查看>>
c#简单自定义异常处理日志辅助类
查看>>
Hibernate 、 Axis2发布
查看>>
使用IPostBackEventHandler让JavaScript“调用”回传事件
查看>>
深入理解计算机系统(3.1)---走进汇编的世界
查看>>
Shell 利用 curl 模拟登陆
查看>>
DIV相关的操作总结
查看>>
常用DOS命令参数详解
查看>>
CSS3 动画一瞥
查看>>
ZBarReaderView屏幕旋转问题
查看>>
算法:基于 RingBuffer 的 Queue 实现《续》
查看>>
ylb:SQL 系统函数
查看>>
Online SVG to PNG/JPEG/TIFF conversion
查看>>
ubuntu系统自带的火狐(firefox)如何安装Adobe Flash
查看>>
SQL Server创建表超出行最大限制解决方法
查看>>
paip.文件读写api php java python总结.txt
查看>>
C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 客户端多网络支持
查看>>
Effective C++ Item 18 Make interfaces easy to use correctly and hard to use incorrectly
查看>>