旺仔练习:service的普通方式和绑定方式的启动和停止

package com.example.administrator.test.Fragment.Service;

import android.app.IntentService;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.net.Uri;
import android.os.IBinder;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

import com.example.administrator.test.R;
import com.google.android.gms.appindexing.Action;
import com.google.android.gms.appindexing.AppIndex;
import com.google.android.gms.appindexing.Thing;
import com.google.android.gms.common.api.GoogleApiClient;

public class TestService extends AppCompatActivity {

    public void bt1_OnClick(View v) {

        Intent intent = new Intent( this, MyService.class );
        intent.putExtra( "test", "发送的数据" );
        startService( intent );
        Toast.makeText( this, "MyService已启动", Toast.LENGTH_SHORT ).show();
    }

    public void bt2_OnClick(View v) {

        Intent intent = new Intent( this, MyService.class );
        stopService( intent );
        Toast.makeText( this, "MyService已停止", Toast.LENGTH_SHORT ).show();
    }

    ServiceConnection sc;
    MyService.MyBinder myb;

    //绑定方式
    public void bt3_OnClick(View v) {
        Intent intent = new Intent( this, MyService.class );
        if (sc == null) sc = new ServiceConnection() {
            @Override
            public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
                //接收代理对象
                myb = (MyService.MyBinder) iBinder;
                Toast.makeText( TestService.this, "绑定启动完成,接收返回的对象,读取到的数据="+myb.getTest(), Toast.LENGTH_SHORT ).show();
            }

            @Override
            public void onServiceDisconnected(ComponentName componentName) {
                Toast.makeText( TestService.this, "服务连接断开", Toast.LENGTH_SHORT ).show();
            }
        };
        //三个参数:1.意图2.服务连接3.启动方式
        bindService( intent, sc, Context.BIND_AUTO_CREATE );//自动创建
    }
    //解除绑定
    public void bt4_OnClick(View v)
    {
        if (sc!=null)
        {
            unbindService( sc );
            sc=null;
        }else
        {
            Toast.makeText( this, "清先绑定服务", Toast.LENGTH_SHORT ).show();
        }
    }

}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
  >
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="普通方式启动"
        android:onClick="bt1_OnClick"/>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="普通方式停止"
        android:onClick="bt2_OnClick"/>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="绑定方式启动"
        android:onClick="bt3_OnClick"/>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="解绑方式停止"
        android:onClick="bt4_OnClick"/>
</LinearLayout>
时间: 2024-11-11 21:46:20

旺仔练习:service的普通方式和绑定方式的启动和停止的相关文章

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"

Android Service组件在新进程绑定(bindService)过程

1.首先看两个例子 (1)进程内 Client端 public class CounterService extends Service implements ICounterService { ...... public class CounterBinder extends Binder { public CounterService getService() { return CounterService.this; } } ...... } Server端 public class Ma

CentOS设置虚拟网卡做NAT方式和Bridge方式桥接

http://www.centoscn.com/CentOS/config/2015/0225/4736.html 摘要:KVM虚拟机网络配置的两种方式:NAT方式和Bridge方式.Bridge方式的配置原理和步骤.Bridge方式适用于服务器主机的虚拟化.问题?客户机安装完成后,需要为其设置网络接口,以便和主机网络,客户机之间的网络通信.事实上,如果要在安装时使用网络通信,需要提前设置客户机的网络连接. KVM 客户机网络连接有两种方式: 用户网络(User Networking):让虚拟机

Google Guice之绑定方式

在Guice中,注入器的工作是装配对象图,当请求某一类型实例时,注入器根据对象图来判断如何创建实例.解析依赖.要确定如何解析依赖就需要通过配置注入器的绑定方式. 要创建绑定(Binding)对象,可以继承自AbstractModule类,然后覆盖其configure方法,在方法调用bind()方法来指来定每一次绑定,这些方法带有类型检查,如果你使用了错误的类型编译器就会报告编译错误.如果你已经写好了Module类,则创建一个Module类对象作为参数传递给Guice.createInjector

Spring中的AOP注解方式和XML方式

应掌握内容:1. AOP的全名2. AOP的实现原理[静态代理和动态代理]3. 注解方式的配置4. 通知类型     A. 每种通知的特点和使用方式    B. 获取各种数据,方便日后操作5. 执行表达式的方式6. XML方式的配置7. 如何加载属性文件和注意事项8. 如何引入资源文件,为什么只用引入资源文件 AOP的概念: 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP是

CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解(转)

摘要:KVM虚拟机网络配置的两种方式:NAT方式和Bridge方式.Bridge方式的配置原理和步骤.Bridge方式适用于服务器主机的虚拟化.NAT方式适用于桌面主机的虚拟化. NAT的网络结构图: Bridge的网络结构见图: 一.Bridge方式 问题 客户机安装完成后,需要为其设置网络接口,以便和主机网络,客户机之间的网络通信.事实上,如果要在安装时使用网络通信,需要提前设置客户机的网络连接. KVM客户机网络连接有两种方式: 用户网络(User Networking):让虚拟机访问主机

springboot整合mybatis(映射文件方式和注解方式)

springboot作为一个微服务框架,给我们开发人员提供极大的便利,秉着约定大于配置的原则,通过starter包的形式为我们做了许多默认的配置,在进行数据持久化到关系型数据库时,我们一般都会首选spring data jpa,springboot为我们提供了starter包,只需配置很少的参数,就能满足我们的需求,非常方便.但是当我们遇到一些比较复杂的查询.多表关联查询及动态sql时,mybatis则在这方面更出色,并且在使用mybatis时我们可以通过sql优化来提高查询效率,springb

spring mvc 的各种参数的绑定方式

本文转自http://www.cnblogs.com/HD/p/4107674.html SpringMVC的各种参数绑定方式 1. 基本数据类型(以int为例,其他类似):Controller代码: @RequestMapping("saysth.do") public void test(int count) { } 表单代码: <form action="saysth.do" method="post"> <input n

Post方式与Get方式比较

在学习爬虫的过程了解到了在访问服务器时,有两种请求的方式,Post方式和Get方式 Post方式:向指定的资源提交要被处理的数据 Get方式:从指定的资源请求数据. GET 方法 请注意,查询字符串(名称/值对)是在 GET 请求的 URL 中发送的: /test/demo_form.asp?name1=value1&name2=value2 有关 GET 请求的其他一些注释: GET 请求可被缓存 GET 请求保留在浏览器历史记录中 GET 请求可被收藏为书签 GET 请求不应在处理敏感数据时