【发布时间】:2013-09-03 14:07:04
【问题描述】:
我想不通。
出于某种原因,这个线程的代码实际上是在 UI 线程上运行的。 如果我断点它 UI 停止。或睡眠它,用户界面停止。因此,网络活动在“ui”线程上是不允许的。
我没有使用异步任务,因为我不知道循环它的正确方法。 (在 onPostExecute 中调用它的新实例似乎是一种不好的做法,并且好像 async 用于一次性任务。
我扩展线程。
public class SyncManager extends Thread {
public SyncManager(Context context){
sdb = new SyncManagerDBHelper(context);
mContext = context;
}
@Override
public void run() {
while(State == RUNNING) {
try{
SyncRecords(); // Break point here = UI freeze.
} catch (Exception e) {
e.printStackTrace();
}
try {
Thread.sleep(10000); // So also causes UI freeze.
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public void startThread() {
Log.i("SyncManager", "start called");
if((State == PAUSED || State == STOPPED) && !this.isAlive() )
{
State = RUNNING;
run();
}
}
我从我的活动中调用
sm = new SyncManager(this);
sm.startThread();
【问题讨论】:
标签: android multithreading networking freeze ui-thread