使用Service 绑定能够做到当一个Activity 销毁的时候,Service 服务同样也会销毁,“不能同生,但能同死”,代码:
MainActivity code:
public class MainActivity extends Activity {
protected static final String TAG = "MainActivity";
private boolean flag;
private Button startBtn, stopBtn;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
flag = false;
// 设置
startBtn = (Button) this.findViewById(R.id.startBtn);
stopBtn = (Button) this.findViewById(R.id.stopBtn);
startBtn.setOnClickListener(listener);
stopBtn.setOnClickListener(listener);
}
private OnClickListener listener = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.startBtn:
bindService();
break;
case R.id.stopBtn:
unBind();
break;
default:
break;
}
}
};
private void bindService() {
Intent intent = new Intent(MainActivity.this, BindService.class);
bindService(intent, conn, Context.BIND_AUTO_CREATE);
}
private void unBind() {
if (flag == true) {
unbindService(conn);
flag = false;
}
}
private ServiceConnection conn = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName name) {
// TODO Auto-generated method stub
}
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
// TODO Auto-generated method stub
MyBinder binder = (MyBinder) service;
BindService bindService = binder.getService();
bindService.MyMethod();
bindService.setListener(new UpdateListener() {
@Override
public void onPostExecute(String result) {
// TODO Auto-generated method stub
String data=result;
System.out.println(data+"0000");
}
});
flag = true;
}
};
}
//2、Service code:
public class BindService extends Service {
@SuppressWarnings("unused")
private UpdateListener listener;
private static final String TAG = "BindService";
public MyTask task;
public void MyMethod() {
task = new MyTask();
task.execute("http://192.168.8.66:8888/a.txt");
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return myBinder;
}
public class MyBinder extends Binder {
public BindService getService() { // 返回Service 对象本身
return BindService.this;
}
}
private MyBinder myBinder = new MyBinder();
public class MyTask extends AsyncTask {
public String data;
@Override
protected String doInBackground(String... params) {
String path = params[0];
Log.i("url path", path);
String data = NetUtils.getConnection(path);
return data;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
if (listener != null) {
listener.onPostExecute(result);
}
}
}
public UpdateListener getListener() {
return listener;
}
public void setListener(UpdateListener listener) {
this.listener = listener;
}
}
3、thread 包中的AsynTask code:
public class MyTask extends AsyncTask{
private UpdateListener listener;
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
String data=new String();
String path=params[0];
Log.i("MyTask",path);
data=NetUtils.getConnection(path);
System.out.println("异步任务中的数据信息"+"\n"+data);
return data;
}
@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
if(listener != null){
listener.onPostExecute(result);
}
}
public UpdateListener getListener() {
return listener;
}
public void setListener(UpdateListener listener) {
this.listener = listener;
}
}
4、接口 interface code:
public interface UpdateListener {
void onPostExecute(String result);
}
5、utils 中的 Networke code:
public class NetUtils {
// 获取网络连接
public static String getConnection(String path){
try {
URL url = new URL(path);
HttpURLConnection cn = (HttpURLConnection) url.openConnection();
cn.setConnectTimeout(5000);
cn.setRequestMethod("GET");
InputStreamReader is = new InputStreamReader(cn.getInputStream());
BufferedReader reader = new BufferedReader(is);
String result = reader.readLine().toString();
reader.close();
is.close();
return result;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("查询失败,请检查网络...");
return null;
}
}
}
Service 绑定
最新推荐文章于 2024-05-09 14:05:42 发布