类QQ切换多帐号时,如何停止多线程的网络请求/切换数据 本帖最后由 zhujunhua_2010 于 2014-06-17 11:27:42 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 第一 所有的数据加标志位 类似于QQ号码或者ID把,,当你切换的时候 数据ID或者QQ号码也改变了,但是之前的线程还在运转,所以需要在线程里面判断当前的ID 是否和切换的ID一样 如果一样即可获取数据更新数据,如果不一样 那就抛弃掉这个数据。new Thread(){ public void run(){ String _id1 = getCurrentQQID(); String _id2 = getAccountQQID(); if (_id1.equals(_id2)) { //一样 即可操作网络,更新数据 } else { //不一样return; 或者... } } }.start(); 在调用的地方,是根据帐号生成的数据库操作类的实例,但是在封装的数据库操作类中 SQLiteDatabase database这个是static的(类似单例的效果),否则会出现数据库未close等一系列错误。所以就会出现调用处拿到的是操作DB_A的连接,但是切换B后就变成操作DB_B的连接了。你的意思,应该是数据库操作类不是单例的。但这样就有数据库未close等问题 我目前的实现,类似这种方法。在数据库操作类和网络请求操作类里面,定义一个全局的int变量mFlag,和一个static的int变量sFlag;获取数据库/网络操作实例的时候,赋值mFlag=sFlag;切换帐号时,sFlag++;在数据库/网络操作时,比较mFlag == sFlag,判断是否return。但是感觉,这个应该只是一个临时的方案,有点治标不治本的感觉。 当你切换的时候 ,可以弹出一个Dialog ,在后台把需要处理的逻辑处理完 ,停止上一次的线程 或者 无用的数据抛弃掉。 但是切换帐号的时候,不知道有多少线程,几个网络请求在发生是要用线程池来处理吗?(有可能造成最新的网络请求没线程处理,处于等待状态,然后界面Dialog也一直在等待状态吗?)网络请求呢? 怎么只将视频旋转90度播放,其他不变 请教下android键位的问题 新手上路 编译问题 求救! 如何在一个程序中安装另一个程序 安卓编程错误,求高手!太诡异了! 急,关于replace替换的问题 SQLite怎么加用户名密码呢? android 文件上传 Android java EditText 编辑问题 R报红是什么意思呀? 如何获取apk执行过程中调用的framework层的接口? 我想知道,在模拟器能运行,真机不能运行的情况有哪些
public void run(){
String _id1 = getCurrentQQID();
String _id2 = getAccountQQID();
if (_id1.equals(_id2)) {
//一样 即可操作网络,更新数据
} else {
//不一样return; 或者...
}
}
}.start();
在调用的地方,是根据帐号生成的数据库操作类的实例,但是在封装的数据库操作类中 SQLiteDatabase database这个是static的(类似单例的效果),否则会出现数据库未close等一系列错误。所以就会出现调用处拿到的是操作DB_A的连接,但是切换B后就变成操作DB_B的连接了。你的意思,应该是数据库操作类不是单例的。但这样就有数据库未close等问题
我目前的实现,类似这种方法。
在数据库操作类和网络请求操作类里面,定义一个全局的int变量mFlag,和一个static的int变量sFlag;获取数据库/网络操作实例的时候,赋值mFlag=sFlag;切换帐号时,sFlag++;在数据库/网络操作时,比较mFlag == sFlag,判断是否return。
但是感觉,这个应该只是一个临时的方案,有点治标不治本的感觉。
但是切换帐号的时候,不知道有多少线程,几个网络请求在发生
是要用线程池来处理吗?(有可能造成最新的网络请求没线程处理,处于等待状态,然后界面Dialog也一直在等待状态吗?)
网络请求呢?