Я не могу понять это.Почему моя тема замораживает UI-Thread?
По какой-либо причине код этой нити фактически работает на потоке пользовательского интерфейса. Если я сломаю точку, UI остановится. или Сон, UI остановился. и, следовательно, сетевая активность не разрешена как ее на нити «ui».
Ive не используется задача Async, потому что я не знаю, как правильно ее зацикливать. (Называя новый экземпляр этого в onPostExecute
кажется, плохая практика, и, как будто асинхронной для задач один прочь.
Выражаю тему.
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();
Посмотрите: https://stackoverflow.com/questions/8052522/why-we-call-thread-start-method-which-in-turns-calls-run-method/36812010#36812010 –