public class TestActivity extends Activity {
private Button startButton = null;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        startButton = (Button)findViewById(R.id.startButton);
        
        startButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
updateBarHandler.post(updateThread);
}
});    }
    
    Handler updateBarHandler = new Handler(){
public void handleMessage(Message msg){
updateBarHandler.post(updateThread);
}
    
    };
    
    Runnable updateThread = new Runnable() {
int i = 0;
public void run() {
i = i + 10;

Message msg = updateBarHandler.obtainMessage();
msg.arg1 = i;

try {
Thread.sleep(1000);

catch (InterruptedException e) {
e.printStackTrace();
}

updateBarHandler.sendMessage(msg);
Log.i("updateThread", ""+i);
if (i == 100) {
updateBarHandler.removeCallbacks(updateThread);
}
}
};
    
}

解决方案 »

  1.   

    ActivityManager: Warning: Activity not started, its current task has been brought to the front
    好几次抱这种错,不知怎么回事
      

  2.   

    按键点击一下,触发线程执行run方法, msg.arg1 = i;updateBarHandler.sendMessage(msg);执行之后
    updateBarHandler.post(updateThread);再次会到run方法
    报错的意思是。模拟器当前运行的程序就是你这个程序
      

  3.   

    执行到100还会加是由于updateBarHandler.removeCallbacks(updateThread);代码运行到这里消息列队里已没updateThread了,虽然前面有updateBarHandler.sendMessage(msg)但是这只是往消息列队加消息,不会马上执行消息处理。等于100时你应该调用updateBarHandler.removeMessages(msg.what);
    或者小于100才发消息。                Runnable updateThread = new Runnable() {
            int i = 0;
            public void run() {
                i = i + 10;
                
                Message msg = updateBarHandler.obtainMessage();
                msg.arg1 = i;
                
                try {
                    Thread.sleep(1000);
                } 
                catch (InterruptedException e) {
                    e.printStackTrace();
                }
                
                
                Log.i("updateThread", ""+i);
                if (i < 100) {
                 updateBarHandler.sendMessage(msg);            
                }
            }
        };
      

  4.   


    退出模拟器中运行的程序,或project->clean一下。