Android Service后台处理结果给Activity
AndroidManifest
<service android:name=".serviet.model.MyTimerService"></service>
第一步
public class ServiceActivity extends Activity { @BindView(R.id.stop_bu) Button stopBu; @BindView(R.id.statr_bu) Button statrBu; public static TextView serviet_tv; public static Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); if (msg.what == 1) { serviet_tv.setText((String) msg.obj); } }; }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_service); ButterKnife.bind(this); serviet_tv = (TextView) findViewById(R.id.serviet_tv); // stop_bu.setOnClickListener(view ->{ // stopService(new Intent(ServiceActivity.this,MyTimerService.class)); // }); // } @OnClick({R.id.stop_bu, R.id.statr_bu}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.stop_bu: stopService(new Intent(ServiceActivity.this, MyTimerService.class)); break; case R.id.statr_bu: startService(new Intent(ServiceActivity.this, MyTimerService.class)); break; } } }
第二步
//后台定时执行 sercice请求 执行后的结果,怎么传递给前台Activity public class MyTimerService extends Service { Timer timer; TimerTask task; @Override public IBinder onBind(Intent intent) { return null; } @Override public void onCreate() { timer = new Timer(); super.onCreate(); } //开始服务 @Override public int onStartCommand(Intent intent, int flags, int startId) { task = new TimerTask() { @Override public void run() { Log.i("www", "222222222"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); String str = sdf.format(new Date()); Message message = new Message(); message.what = 1; message.obj = str; ServiceActivity.handler.sendMessage(message); } }; timer.schedule(task, 0, 100); return super.onStartCommand(intent, flags, startId); } @Override public void onDestroy() { timer.cancel(); super.onDestroy(); } }