Service内的写法
1.首先创建一个线程,在线程里进行延时操作,然后将延时的数据封装到一个Intent中,然后将这个广播发出去
2.在MainActivity中创建一个类继承与Receiver类通过Intent接收传过来的信息,然后将传过来的信息显示在button上
public class MyService extends Service {
private int count=0;
@Override
public void onCreate() {
super.onCreate();
Log.d("1","onCreate");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d("1","onStartCommand");
new Thread(new Runnable() {
@Override
public void run() {
while (true){
if (count>100){
count=0;
}
count++;
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
Intent intent1=new Intent();
intent1.setAction(MainActivity.DOWN_LOAD);
intent1.putExtra("count",count);
sendBroadcast(intent1);
}
}
}).start();
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy() {
super.onDestroy();
Log.d("1","onDestroy");
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
在MainActivity中注册并接收
private ProgressBar mProgressBar;
private DownLoadReceiver mDownReceiver;
public static final String DOWN_LOAD="com.my.broadcast.download";
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mDownReceiver=new DownLoadReceiver();
IntentFilter intentFilter=new IntentFilter();
intentFilter.addAction(DOWN_LOAD);
registerReceiver(mDownReceiver,intentFilter);
Intent intent5=new Intent(getApplicationContext(),MyService.class);
startService(intent5);
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(mReceiver);
unregisterReceiver(mDownReceiver);
}
class DownLoadReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
int count=intent.getIntExtra("count",0);
mProgressBar.setProgress(count);
}
}
}