小弟原創(chuàng)文章,轉(zhuǎn)載請注明本文出處
前言
公司之前做的一個(gè)電視機(jī)上的播報(bào)應(yīng)用(類似于銀行的那種播報(bào)“請某某某到幾號窗口”),現(xiàn)在要我做個(gè)定時(shí)重啟
正題
整體思路:定時(shí)任務(wù)在服務(wù)里執(zhí)行,當(dāng)時(shí)間等于某個(gè)特定的值就重啟
服務(wù)的代碼:
/**
* Created by mk_who on 2017/8/3/0003.
*/
public class MyService extends Service {
private IBinder mBinder=new Binder();
private Timer mTimer;
private TimerTask mTimerTask;
private Intent intent = new Intent("com.example.restart.RECEIVER");
@Override
public IBinder onBind(Intent intent) {
return mBinder;
}
@Override
public void onCreate() {
mTimer = new Timer();
mTimerTask = new TimerTask() {
@Override
public void run() {
new Thread(new Runnable() {
@Override
public void run() {
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
String dateStr = sdf.format(new Date());
if (dateStr.equals("16:20")){
sendBroadcast(intent);//發(fā)送廣播
}
}
}).start();
}
};
mTimer.schedule(mTimerTask,5000,59000);
mTimer=null;
mTimerTask=null;
}
@Override
public void onDestroy() {
super.onDestroy();
mTimer.cancel();
mTimerTask.cancel();
}
}
開啟服務(wù)的頁面的部分代碼:
private void startMyService() {
Intent intent = new Intent(getApplicationContext(), MyService.class);
bindService(intent, connServiceconn, BIND_AUTO_CREATE);
}
private Serviceconn connServiceconn = new Serviceconn();
private class Serviceconn implements ServiceConnection {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
Log.e("--------", "------開啟服務(wù)成功---");
}
@Override
public void onServiceDisconnected(ComponentName name) {
}
}
@Override
protected void onResume() {
super.onResume();
startMyService();//開啟服務(wù)
filter.addAction("com.example.restart.RECEIVER");
registerReceiver(reStartReceiver, filter);
}
service跟activity通信的廣播代碼:
private BroadcastReceiver reStartReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals("com.example.restart.RECEIVER")) {
finish();
Intent i = Main.this.getPackageManager()
.getLaunchIntentForPackage(Main.this.getPackageName());
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
}
}
};
當(dāng)時(shí)是下午五點(diǎn)半(六點(diǎn)鐘下班)接到的任務(wù),著急下班吃飯(就是不想加班),就用了能想到的最簡單的實(shí)現(xiàn)方式。