Android四大组件之Service的两种使用情况
来源:互联网 发布:linux系统的rpm包什么 编辑:程序博客网 时间:2024/05/21 08:40
最近车载项目中的车辆信息App中两个情况一个实时的车况数据/以及今日车况统计数据(下面附图)
一开始对于实时界面的有两个选项用BroadCast或者Service,but 同一个界面有好多实时数据需要显示,显然用广播就不怎么合适了;
ok,最后我选择两个界面都和服务关联起来
我们都知道Service有两种方式:bindService and startService
两者不同:bindService需要与Activity绑定,生命周期与Activity一样,(同生共死)
startService一般都是app界面是否可见都可以活,这也是App可以后台一原因,(怎么也不死,除非关机),在项目中,在开机后就开启这个服务,(即接收到开机广播就开启服务)
至于怎么用就不怎么赘述了,直接交上关键代码
//开机即开启服务1、 @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); Log.d(TAG, "action: ====" + action); if (action.equals("android.intent.action.BOOT_COMPLETED")) { mCanBusManager = new CANBusManager(context); Log.d(TAG, "广播开机"); Intent vehicleInfoService = new Intent(context, MyService.class); context.startService(vehicleInfoService); Log.d(TAG, "车辆信息服务已成功开启");2、在MyService这个类onCreat()中 @Override public void onCreate() { Log.d(TAG, "MyService::::onCreate: "); super.onCreate(); /* BootCompletedReceiver receiver = new BootCompletedReceiver(); registerReceiver(receiver, new IntentFilter(Intent.ACTION_TIME_TICK)); Log.d(TAG, "MyService: 服务初始化");*///这里就是你要用Service监听的地方 mVehicleInfo = new VehicleinfoActivity(); mVehicleDataManager = new VehicleInfoManger(getApplication()); mVehicleDataManager.init(); }3、防止SerVice死掉(有点多余)@Override public void onDestroy() { super.onDestroy(); Log.d(TAG, "onDestroy:MyService 服务销毁"); Intent intent = new Intent(); intent.setClass(this, MyService.class); startService(intent); }4、//此方法是为了可以在Acitity中获得服务的实例(VehicleinfoActivity) public class MyServiceBinder extends Binder { public MyServiceBinder getService() { return MyServiceBinder.this; } }5、在 VehicleinfoActivity 关键的一步 private ServiceConnection CanBusConnection = new ServiceConnection(){ @Override public void onServiceConnected(ComponentName name, IBinder service) { myService = ((MyService.MyServiceBinder) service).getService();/* mVehicleDataManager = new VehicleInfoManger(getApplication(),VehicleinfoActivity.this); mVehicleDataManager.init();*/ Log.d(TAG, "onServiceConnected: 走了"); } @Override public void onServiceDisconnected(ComponentName name) { } };以上为StartService使用关键代码以下为BindService使用关键代码 private ServiceConnection CanBusConnection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { mRealDataManager = new RealDataManger(getActivity(), RealTimeFragment.this); mRealDataManager.init(); Log.d(TAG, "onServiceConnected: 走了"); } @Override public void onServiceDisconnected(ComponentName name) { } };
阅读全文
0 0
- Android四大组件之Service的两种使用情况
- Android四大组件之Service的使用
- android 四大组件之Service两种调用方式使用详解
- Android四大组件Service之两种的多线程启动方式
- Android 四大组件之Service 的生命周期和使用
- android四大组件学习之-Service的使用
- Android 四大组件之Service的基本使用
- Android 四大组件之Service 的生命周期和使用
- Android 四大组件之特殊Service(IntentService)的使用
- Android四大组件之Service的介绍
- android的四大组件之Service
- 四大组件之普通Service的使用
- android四大组件---Service的简单使用
- Android四大组件之一的Service使用
- Android四大组件之广播注册的两种方式
- Android四大组件之 Service
- Android四大组件之 Service
- Android四大组件之 Service
- HashTable HashMap HashSet区别(java)
- 浅谈搜索引擎——SEO
- 程序员职业生涯全攻略
- Linux学习(七)
- java网络编程读书笔记-Ch02
- Android四大组件之Service的两种使用情况
- 垃圾收集器
- 网络请求+webview
- hdu6114 2017"百度之星"初赛(B)1001Chess(dp)
- c语言初步经典题15--另类求和程序填空
- c++经验总结(1):linux c 编译时出现warning: assignment makes pointer from integer without a cast原因
- EA画时序图
- 《C Primer Plus》
- 你还在这样做:浏览器“记住用户名密码”?