实例:
public class MainActivity extends Activity {
private TextView loadingTv;
private ProgressBar mBar;
private Intent intent;
private SharedPreferences pref;
Handler handler = new Handler(){
public void handleMessage(android.os.Message msg) {
int current = pref.getInt("current", -1);
if (current>100||current<0) {
Log.i("tag", "进度值错误");
}else {
mBar.setProgress(current);
loadingTv.setText(current+"%");
handler.sendEmptyMessageDelayed(1, 1000);
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
loadingTv = (TextView)findViewById(R.id.loadingTv);
mBar = (ProgressBar)findViewById(R.id.bar);
intent = new Intent(this,ShareFileService.class);
pref = getSharedPreferences("currentLoading", MODE_PRIVATE);
mBar.setMax(100);
}
public void start(View view){
startService(intent);
handler.sendEmptyMessageDelayed(1, 1000);
}
public void stop(View view){
stopService(intent);
}
}
public class ShareFileService extends Service{
private Timer timer;
private SharedPreferences preferences;
private int i = 0;
@Override
public void onCreate() {
super.onCreate();
timer = new Timer(); //定时器
preferences = getSharedPreferences("currentLoading", MODE_PRIVATE);
timer.schedule(new MyTimerTask(), 0,1000);
}
public void setCurrentLoading(int value){
preferences.edit().putInt("current", value).commit();
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onDestroy() {
super.onDestroy();
if (timer!=null) {
timer.cancel();
timer = null;
}
}
class MyTimerTask extends TimerTask{
@Override
public void run() {
setCurrentLoading(i);
if (i==100) {
i=0;
}
i++;
}
}
}
(注册服务)
3.自定义接口:
完成通信只能用于进程间通信,不能用于跨进程通信。
实例:
public class MainActivity extends Activity {
private TextView loadTV;
private ProgressBar bar;
private MyService.MyBind bind;
private Loading load;
Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
if (msg.what == 1) {
int i = load.getloading();
bar.setProgress(i);
loadTV.setText(i + "%");
handler.sendEmptyMessageDelayed(1, 100);
}
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
loadTV = (TextView) findViewById(R.id.loadingTv);
bar = (ProgressBar) findViewById(R.id.bar);
bar.setMax(100);
}
ServiceConnection conn = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName name) {
}
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
load = (Loading) service;
}
};
public void start(View view) {
Intent intent = new Intent(this, MyService.class);
boolean b = bindService(intent, conn, BIND_AUTO_CREATE);
if (b) {
Toast.makeText(this, "绑定成功", Toast.LENGTH_SHORT).show();
handler.sendEmptyMessageDelayed(1, 100);
} else {
Toast.makeText(this, "绑定失败", Toast.LENGTH_SHORT).show();
}
}
public void stop(View view) {
unbindService(conn);
}
}
public class MyService extends Service {
private int i = 0;
private Timer timer;
private MyTimeTask myTimeTask;
@Override
public void onCreate() {
super.onCreate();
timer = new Timer();
myTimeTask = new MyTimeTask();
timer.scheduleAtFixedRate(myTimeTask, 0, 100);
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return new MyBind();
}
class MyBind extends Binder implements Loading {
public MyService getservice() {
return MyService.this;
}
@Override
public int getloading() {
// TODO Auto-generated method stub
return i;
}
}
@Override
public void onDestroy() {
super.onDestroy();
if (timer != null) {
timer.cancel();
timer = null;
}
}
public class MyTimeTask extends TimerTask {
@Override
public void run() {
// TODO Auto-generated method stub
if (i < 100) {
i++;
} else {
i = 100;
}
}
}
}
(注册服务)
public interface Loading {
int getloading();
}