andorid 一个与activity有数据交互的本地服务
欢迎转载,转载请注明出自:www.androidkaifa.com 安卓开发网
在大多数情况下,android只需要调用本地服务(即调用者和在服务同一个进程内),下面的例子演示了如何调用本地服务在一个acitivity界面中,通过输入名称后,单击界面中按钮来测定服务运行,代码示例:
IService.java
package com.local.service;
public interface IService {
public String getHelloResult(String name);
}
HelloService.java
public class HelloService extends Service {
private MyServiceBinder myServiceBinder = new MyServiceBinder();
@Override
public IBinder onBind(Intent intent) {
return myServiceBinder;
}
public class MyServiceBinder extends Binder implements IService {
@Override
public String getHelloResult(String name) {
// TODO Auto-generated method stub
return name+":Hello World";
}
}
}
LocalServiceCallDemo.java
public class LocalServiceCallDemo extends Activity {
private EditText mEditText;
private IService serviceInstance;
private TextView textView;
ServiceConnection conn = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
Log.i("INFO", "Service bound");
serviceInstance = (IService) service;
}
@Override
public void onServiceDisconnected(ComponentName arg0) {
Log.i("INFO", "Service Unbound");
}
};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button mButton = (Button) findViewById(R.id.myButton);
mEditText = (EditText) findViewById(R.id.myEditText);
textView = (TextView) findViewById(R.id.myTextView01);
bindService(new Intent("com.local.service.MY_SERVICE"), conn,
Context.BIND_AUTO_CREATE);
mButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Editable str;
str = mEditText.getText();
String result = serviceInstance.getHelloResult(str.toString());
textView.setText(result);
}
});
}
}