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+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
No comments:
Post a Comment