OTA升级,第三方如何发到消息到handler
来源:互联网 发布:谷嫂淘宝同款排除王 编辑:程序博客网 时间:2024/04/26 20:46
OTA升级之下载部分:
1,首先在收到开机广播中,context.startService(service);
2,在全局application中:public class Base extends Application {
正在下载判断:
public boolean IsDownloadRunning=false;
消息队列
public ArrayList<StatusMessage> messages = new ArrayList<StatusMessage>();
全局变量访问方法:app = (Base)getApplicationContext();
3,UpgradeService extends Service ,在onCreate中,检查有没有网络,如果没有,在一定时间内给予超时提醒,并注册,监听
ConnectivityManager.CONNECTIVITY_ACTION 广播。在超时期间,有可能有网络了,就走这个广播处理。具体是起一个异步任务,在异步任务
中,连接网络,如果网络是通的,则去初始化下载。
4,在UpgradeService 中有handler:
public Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
setExitTimeOut();//有消息在接收,重新定时,在一定时间内没有消息,即超时了,结束服务。即相当于看门狗功
能。
Log.d(TAG, "handleMessage called: " + msg.what + ", step: ");
Intent intent = new Intent();
intent.setAction(getPackageName() + ".status");
intent.putExtra("message", msg);
sendBroadcast(intent); //发出状态广播。
switch(msg.what) {
根据接收到的消息类型,填充全局变量的messages 消息队列。
handler.sendMessage(handler.obtainMessage(SystemUpgradeMessage.REBOOT_REQUIRED, 0, 0));
这里有一个问题:handler是本service中的。可以在本service中建立的线程或异步线程使用此handler。其他类中怎么使用?
方法:public interface SystemUpgradeListener {
public void autoCallback(Message msg);
}
本service 实现这个SystemUpgradeListener 接口:
public void autoCallback(Message msg) {
// TODO Auto-generated method stub
Log.d(TAG, "autoCallback called.");
Message myMsg = handler.obtainMessage(msg.what, msg.arg1, msg.arg2);
handler.sendMessage(myMsg);
}
在其他类中,例如class UpgradeListener implements FileDownLoaderListener{//第三方给的文件下载监听类。
构造时,将本service作为参数给UpgradeListener 。这时,再借用本service对象调用autoCallback,即将消息送达到handler。
public UpgradeListener(SystemUpgradeListener callback,Base app)
{
this.callback=callback;
this.app=app;
}
这样就能在第三方发到消息到handler。
- OTA升级,第三方如何发到消息到handler
- 怎么获得第三方应用发到通知栏的消息
- 分享到微信的消息跳转到第三方APP
- 第三方推送过来的消息,用户点击如何处理
- OTA升级
- OTA升级
- OTA升级
- Handler消息如何取消
- 如何整合第三方SDK到Plugin-X
- iOS 如何调试第三方统计到的崩溃报告
- 微博第三方如何整合到项目中
- 如何使用ctags跳转到库函数/第三方库函数
- iOS 如何调试第三方统计到的崩溃报告
- 升级到xcode5之后 引用第三方库的时候会出现ARC报错
- Android 升级ADT到22第三方Jar包导致的ClassNotFoundException和NoClassDefFoundError异常解决
- cocopods升级到1.0,导入第三方库,出现问题及解决方式
- cocoapods 升级到1.1.0 后更新第三方库,有一部分提示不支持arm64
- 升级 GT-P5110 到官方 Jelly Bean (OTA 泄露版)
- MFC GDI绘图
- 最短路
- 【杂七杂八的整合】Ubuntu Linux 12.04中的一些使用技巧
- 对STL的增加之算法篇:foreach/数学领域库
- Mecanim 动画曲线
- OTA升级,第三方如何发到消息到handler
- 那些丑陋的Java API
- xenserver创建本地iso库
- 贝叶斯网络应用实例一:胸部疾病诊所
- Cocos2D 2.1: 塔防游戏
- POJ1611The Suspects并查集
- crack the code interview 4.2
- crack the code interview 4.3
- c#的扩展方法