Service绑定日期

Service分类:Start启动和bound绑定

下面主要讲继承Binder类输出当前时间(主要实现onBind()回调方法)

测试如下:

其实就3步!

第一.TimeService类

package com.example.timeservice;

import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
import android.text.format.Time;

public class TimeService extends Service {
    private IBinder binder=new localBinder();
    
    public class localBinder extends Binder{
        TimeService getService(){
            return TimeService.this;
        }
    }
    public IBinder onBind(Intent arg0) {
        // TODO Auto-generated method stub
        return binder;
    }

public String getCurrentTime(){
        Time time =new Time();
        time.setToNow();
        String stringtime=time.format("%Y-%m-%d %H:%M:%S");
        return stringtime;
    }
}

第二.MainActivity

package com.example.timeservice;

import java.util.Random;

import com.example.timeservice.TimeService.localBinder;

import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.widget.TextView;

public class MainActivity extends Activity {

protected TimeService cts;
    boolean bound;
    Handler handler=null;
    TextView text;
    TextView text2;
    private int i=0;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        text=(TextView)findViewById(R.id.text);
        text2=(TextView)findViewById(R.id.text2);
        handler=new Handler(){
            public void handleMessage(Message msg){
                if(msg.what==0x101){
                    onStart();
                    text2.setText("测试:"+i);
                }
                super.handleMessage(msg);
            }
        };
        Thread t=new Thread(new Runnable(){
                
                public void run() {
                    while(!Thread.currentThread().isInterrupted()){
                    i++;
                    Message m=handler.obtainMessage();
                    m.what=0x101;
                    handler.sendMessage(m);
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }

}
                }
            });
        t.start();
    }

protected void onStart(){
        super.onStart();
        Intent intent=new Intent(MainActivity.this,TimeService.class);
        bindService(intent, sc, BIND_AUTO_CREATE);
        if(bound)
        text.setText(cts.getCurrentTime());

}
    protected void onStop(){
        super.onStop();
        if(bound){
            bound=false;
            unbindService(sc);
        }
    }
    private ServiceConnection sc=new ServiceConnection() {
        
        public void onServiceDisconnected(ComponentName arg0) {
            // TODO Auto-generated method stub
            bound=false;
            
        }
        
        public void onServiceConnected(ComponentName arg0, IBinder arg1) {
            // TODO Auto-generated method stub
            localBinder binder=(localBinder)arg1;
            cts=binder.getService();
            bound=true;
        }
    };
}

3.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

<TextView
        android:id="@+id/text2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/button"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:text="----------"
        android:textSize="30dp" />

<TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignRight="@+id/text2"
        android:layout_below="@+id/text2"
        android:layout_marginTop="16dp"
        android:text="----------"
        android:textSize="30dp" />

</RelativeLayout>

GG!!!!就这么简单,主要是练习Service应用

时间: 2024-10-11 06:28:56

Service绑定日期的相关文章

Android -- Service绑定解绑和aidl

Service是安卓四大组件之一,先前讲到了Service的生命周期,以及非绑定类型的生命周期的例子,这次来分享一下绑定形式的. 应用组件(客户端)可以调用bindService()绑定到一个service.Android系统之后调用service的onBind()方法,它返回一个用来与service交互的IBinder. 绑定是异步的,bindService()会立即返回,它不会返回IBinder给客户端.要接收IBinder,客户端必须创建一个ServiceConnection的实例并传给b

Service绑定模式

使用绑定的Service可以实现组件与Service的通信. 组件与被绑定的Service可以不归属于同一个应用程序,因此通过绑定Service可以实现进程间通信. 调用bindService(Intent service,ServiceConnectionconn,int flags)方法即可实现当前组件与Service的绑定. 参数说明 Intent service:配置被激活的Service组件,该Intent可以是显式的,也可以是隐式的: ServiceConnection conn:当

android 将Service绑定到Activity

Service可以和Activity绑定,后者会维持对Service实例的引用,此引用允许你像对待其他实例化的那样,对正在运行的Service进行方法调用. 允许Service和Activity绑定,这样能够获得更加详细的接口.要让一个Service支持绑定,需要实现onBind方法,并返回被绑定Service的当前实例. package com.example.androidtest.service; import android.app.Service; import android.con

Activity和Service绑定

Activity和Service绑定后,可以方便Activity随时调用对应的Service里面的方法 绑定代码如下 Activity类代码: [java] view plaincopy <span style="font-size:16px;">package com.fox.Activity; import com.fox.Activity.service.Service1; import android.app.Activity; import android.con

SpringMVC初始化参数绑定--日期格式

一.初始化参数绑定[一种日期格式] 配置步骤: ①:在applicationcontext.xml中只需要配置一个包扫描器即可 <!-- 包扫描器 --> <context:component-scan base-package="cn.happy.controller"></context:component-scan> ②:在处理器类中配置绑定方法  使用@InitBinder注解 在这里首先注册一个用户编辑器 参数一为目标类型   proper

spring 3.2 自定义参数绑定--日期格式转换器

springmvc配置文件 <!-- 代替org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping 和org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter --> <mvc:annotation-driven conversion-service="conver

10天学通Android开发(2-3)-核心组件Service绑定

通过startService开启的服务,当访问者关闭时,服务仍然存在:访问者需要与服务进行通信,则我们需要将访问者与服务进行绑定: 如果使用Context.bindService()方法启动服务,则在服务未创建时,系统会调用服务的onCreate()方法,接着调用onBind()方法,这时就访问者与服务已经绑定了,主程序销毁时服务也会终止. 1)绑定服务时,会自动创建服务. 2)如果创建后并启动后再绑定,不会重新创建,一个Service只有一个实例 3)同时启动和绑定服务时,解除绑定服务,但不会

Service 绑定方式启动,生命周期。绑定方式读取服务器数据

package com.example.lenovo.service; import android.app.Service; import android.content.Intent; import android.os.Binder; import android.os.IBinder; import android.util.Log; public class MyService extends Service { public MyService() { Log.e("TAG"

Kubenetes里pod和service绑定的实现方式

我之前的文章 如何在Kubernetes里创建一个Nginx service介绍了如何创建一个Kubernetes pod和service,使用的方法是命令kubectl run. 本文介绍另一种方式,通过这种方式来学习Kubernetes里pod和对应的service是如何绑定的. 首先使用下面的命令行创建一个名称为jerry-nginx-1982的deployment: kubectl create deployment jerry-nginx-1982 --image=nginx 然后使用