Service计算加法

1.Service简单概述
  Service(服务)是一个一种可以在后台执行长时间运行操作而没有用户界面的应用组件。服务可由其他应用组件启动(如Activity),服务一旦被启动将在后台一直运行,即使启动服务的组件(Activity)已销毁也不受影响。 此外,组件可以绑定到服务,以与之进行交互,甚至是执行进程间通信 (IPC)。 例如,服务可以处理网络事务、播放音乐,执行文件 I/O 或与内容提供程序交互,而所有这一切均可在后台进行,Service基本上分为两种形式:

1、布局

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

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="25dp"
    android:orientation="horizontal" >

    <EditText
        android:id="@+id/num1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="请输入一个数" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="8dp"
        android:text="+"
        android:textSize="25sp" />

    <EditText
        android:id="@+id/num2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="请输入二个数" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="8dp"
        android:text="="
        android:textSize="25sp" />

    <TextView
        android:id="@+id/num3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="8dp"
        android:text="?"
        android:textSize="25sp" />
</LinearLayout>

<Button
    android:id="@+id/log_cf"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:text="计算" />

2、Service中的代码

public class MyService extends Service {

private SimplService iBinder;

// 创建继承Binder的类,直接继承Binder类比继承IBinder省事
public class SimplService extends Binder {
	public MyService service() {
		// 返回当前service
		return MyService.this;
	}
	// 加法
	public int add(int a, int b) {
		return a + b;
	}
}

@Override
public void onCreate() {
	super.onCreate();
	//在服务创建的时候就创建方法
	iBinder = new SimplService();
}

@Override
public IBinder onBind(Intent intent) {
	return iBinder;
}

}
3、MainActivity
public class MainActivity extends Activity {

private EditText num1;
private EditText num2;
private TextView num3;
private Button count;
private ServiceConnection scConnection;
private MyService.SimplService sBinder;

@Override
protected void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.activity_main);
	// 找控件
	initViews();
	// ServiceConnection 接口来取得建立连接 与 连接意外丢失的回调。
	scConnection = new ServiceConnection() {
		// 断开连接
		@Override
		public void onServiceDisconnected(ComponentName name) {
			// TODO Auto-generated method stub

		}

		// 连接
		@Override
		public void onServiceConnected(ComponentName name, IBinder service) {
			// 获取sBinder对象,可以调用其中的方法
			sBinder = (SimplService) service;
		}
	};
	/**
	 * bindService有三个参数,
	 * 第一个是用于区分 Service 的Intent 与 startService 中的 Intent 一致,
	 * 第二个是实现了 ServiceConnection 接口的对象,
	 * 最后一个是 flag 标志位。
	 * 有两个flag,BIND_DEBUG_UNBIND 与 BIND_AUTO_CREATE,
	 * 前者用于调试(详细内容可以查看javadoc 上面描述的很清楚),
	 * 后者默认使用。
	 * */
	bindService(new Intent(MainActivity.this,MyService.class), scConnection, Context.BIND_AUTO_CREATE);
	count.setOnClickListener(new OnClickListener() {

		@Override
		public void onClick(View v) {
			// 获取输入框的值
			String numa = num1.getText().toString();
			String numb = num2.getText().toString();
			// 将string转成int
			int add = sBinder.add(Integer.parseInt(numa),
					Integer.parseInt(numb));
			num3.setText(add + "");
		}
	});

}

private void initViews() {
	num1 = (EditText) findViewById(R.id.num1);
	num2 = (EditText) findViewById(R.id.num2);
	num3 = (TextView) findViewById(R.id.num3);
	count = (Button) findViewById(R.id.log_cf);
}

}
4、效果截图
在这里插入图片描述

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值