你好,Android和线程
我有一个活动,其布局是由一个FrameLayout组成。我有一个扩展View的类,然后添加到这个布局。
我想不断吸取这个观点,就像在游戏循环中一样。
问题是,我是新来的Android和该线程的东西正在没有意义..
能,除非我的主UI线程我我真的不更新布局? 我如何着手初始化线程? :(
编辑::这是我所想出的,但它并没有更新我与任何框架
public class GameFrame extends View
{
private GameThread m_gt;
public GameFrame(Context context, int width int height){
//do some initialisation stuff
}
public GameThread getGameThread(){
if(m_gt != null){
return m_gt;
}else{
m_gt = new GameThread(this);
return m_gt;
}
}
@Override
public void onDraw(Canvas canvas){
//Draw loads of stuff
}
public class GameThread extends AsyncTask<Void, Void, Void>
{
private GameFrame m_gf;
public GameThread(GameFrame gf){
m_gf = gf;
}
@Override
protected void onProgressUpdate(Void... arg0){
System.out.println("Wahoo");
m_gf.invalidate();
}
@Override
protected Void doInBackground(Void... arg0) {
long start, end;
while(some bool){
System.out.println("Threadin'");
publishProgress();
//Fiddle with some values
}
return null;
}
}
}
然后初始化它的主要活动:
private FrameLayout frame;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
...
frame = (FrameLayout) findViewById(R.id.gameframe);
GameFrame gf = new GameFrame(this, width, height);
frame.addView(gf);
gf.getGameThread().execute();
}
是我的异步的理解是否正确?如果这项工作的onDraw给出有效的代码?
我也许应该说,打印输出“嗬”和“线程”被打印出来无数次这样的东西必须正确发生。更关键的是它是否印有“卫矛”,那么这无疑应重绘旁边我看...但没有任何反应:(
你这样做应该通过画布绘制。请参阅[this](http://developer.android.com/guide/topics/graphics/2d-grap hics.html)文章。 – clemp6r 2012-01-07 10:26:45