Handler与Runnable
public class MainActivity extends Activity
{
private Button mStartBtn,mEndBtn;
private Handler mHandler;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initCom();
}
private void initCom()
{
mHandler = new Handler();
mStartBtn = (Button)findViewById(R.id.button_start);
mStartBtn.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
//第一次加入消息队列
mHandler.post(r);
}
});
mEndBtn = (Button)findViewById(R.id.button_end);
mEndBtn.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
mHandler.removeCallbacks(r);
}
});
}
Runnable r = new Runnable()
{
@Override
public void run()
{
//要这些的操作,写在run()方法内部
Log.e("-------", "------------");
mHandler.postDelayed(r, 1000);
}
};
}
用Handler更新UI
public class MainActivity extends Activity
{
private Button mStartBtn;
private ProgressBar bar;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initCom();
}
private void initCom()
{
bar = (ProgressBar)findViewById(R.id.progressBar1);
mStartBtn = (Button) findViewById(R.id.button_start);
mStartBtn.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
// 第一次把线程加入消息队列
handler.post(updateBarThread);
}
});
}
Handler handler = new Handler()
{
public void handleMessage(android.os.Message msg)
{
//handler更新UI
bar.setProgress(msg.arg1);
handler.post(updateBarThread);
};
};
Runnable updateBarThread = new Runnable()
{
int i = 0;
@Override
public void run()
{
i = i + 10;
Message msg = handler.obtainMessage();
msg.arg1 = i;//用arg1,提高性能
handler.sendMessage(msg );
//睡眠1秒
try
{
Thread.sleep(1000);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
if (i == 100)
{
handler.removeCallbacks(updateBarThread);
}
}
};
}
xml中进度条:
<ProgressBar
android:id="@+id/progressBar1"
style="@android:style/Widget.ProgressBar.Horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
Timer与Handler:
public class MainActivity extends Activity
{
protected static final int NUM_1 = 1;
private TextView textView;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initCom();
}
private void initCom()
{
textView = (TextView) findViewById(R.id.textView);
Timer timer = new Timer();
timer.schedule(new TimerTask()
{
@Override
public void run()
{
Message msg = new Message();
msg.arg1 = 1;
handler.sendMessage(msg);
}
}, 2000);
}
Handler handler = new Handler()
{
public void handleMessage(android.os.Message msg)
{
// handler更新UI
switch (msg.arg1)
{
case NUM_1:
textView.setText("test");
break;
default:
break;
}
};
};
}