Activity和Service交互
本人常用的三种,不足之处希望大家多多提出宝贵意见
第一种Handler:
Activity
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ProgressBar;
import com.service.MsghdSeceiver;
public class MainHandlerActivity extends Activity {
private ProgressBar mProgressBar;
private Button btn;
private Intent intent;
@SuppressLint("HandlerLeak")
Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
if (msg.what == 0x123) {
// 拿到进度,更新UI
int progress = (int) msg.obj;
mProgressBar.setProgress(progress);
}
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_handler);
mProgressBar = (ProgressBar) findViewById(R.id.pb_mainhd_jindu);
btn = (Button) findViewById(R.id.btn_mainhd_btn);
}
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
MsghdSeceiver.setHandler(handler);
// 启动服务
intent = new Intent("com.example.communication.MSG_ACTIONhd");
}
@Override
protected void onResume() {
super.onResume();
setListener();
}
private void setListener() {
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
startService(intent);
}
});
}
@Override
protected void onDestroy() {
// 停止服务
stopService(intent);
super.onDestroy();
}
}
Service
import android.app.Service;
import android.content.Intent;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
public class MsghdSeceiver extends Service {
/**
* 进度条的最大值
*/
public static final int MAX_PROGRESS = 100;
/**
* 进度条的进度值
*/
private int progress = 0;
private static Handler handlers;
public static void setHandler(Handler handler) {
handlers = handler;
}
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
startDownLoad();
}
/**
* 模拟下载任务,每秒钟更新一次
*/
public void startDownLoad() {
new Thread(new Runnable() {
@Override
public void run() {
while (progress < MAX_PROGRESS) {
progress +=