Hello, I recently started learning development for android (Game 
development to be specific). And I came across the question, to which I 
couldn't find an answer.
So my question would be why does this work?:

public class MainActivity extends Activity{

OurView v;
TextView textView;
Random random;
int num = 0;
 public void onCreate(Bundle bundle){
super.onCreate(bundle);
v = new OurView(this);
setContentView(v);
 textView = (TextView) findViewById(R.id.textView);
 random = new Random();
}
 protected void onResume(){
super.onResume();
v.resume();
}
 public class OurView extends SurfaceView implements Runnable{

Thread t = null;
SurfaceHolder holder;
boolean isItOK = false;
 public OurView(Context context) {
super(context);
holder = getHolder();
}

public void run() {
while(isItOK == true){
if(!holder.getSurface().isValid())
continue;
 Canvas canvas = holder.lockCanvas();
canvas.drawARGB(random.nextInt(256), random.nextInt(256), 
random.nextInt(256), random.nextInt(256));
holder.unlockCanvasAndPost(canvas);
}
}
public void resume(){
isItOK = true;
t = new Thread(this);
t.start();
}
 public void pause(){
isItOK = false;
while(true){
try{
t.join();
}catch(Exception e){
e.printStackTrace();
}
break;
}
}
 }
}



but this doesn't:


public class MainActivity extends Activity{

OurView v;
TextView textView;
Random random;
int num = 0;
 public void onCreate(Bundle bundle){
super.onCreate(bundle);

 setContentView(R.layout.activity_main);
 textView = (TextView) findViewById(R.id.textView);
 random = new Random();
v = new OurView(this);
}
 protected void onResume(){
super.onResume();
v.resume();
}
 public class OurView extends SurfaceView implements Runnable{

Thread t = null;
SurfaceHolder holder;
boolean isItOK = false;
 public OurView(Context context) {
super(context);
holder = getHolder();
}

public void run() {
while(isItOK == true){

num++;
textView.setText(num);
}
}
public void resume(){
isItOK = true;
t = new Thread(this);
t.start();
}
 public void pause(){
isItOK = false;
while(true){
try{
t.join();
}catch(Exception e){
e.printStackTrace();
}
break;
}
}
 }
}



All I did is changed content view. And in threads run() method I changed 
textView's text to "num" variable which is incremented in each while 
cycle...

I don't understand why this doesn't work. Why this doesn't use AsyncTask 
but uses Just plain old thread. I heard that android doesn't support plain 
old Java threads. I'm totally confused, and don't understand anything. 
Could someone please explain what's happening here?





-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to