15/9/9/Service发送倒计时广播Receiver显示

来源:互联网 发布:java regex 编辑:程序博客网 时间:2024/06/05 03:07

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);        }    }}
0 0
原创粉丝点击