나는 완전히 새로운 android이고, 작동 가능하고 메인 스레드 외부에서 UI를 업데이트 할 수있는 방법인지 알고 싶다. 내 코드에서부터이 코드에서 알 수있는 것은 아래에 나열되어 있습니다. 전혀 불가능합니다. 하지만, 문제는 입니다. 다른 스레드 인을 사용하여 UI를 업데이트하고 싶습니다. 미리 감사드립니다.메인 스레드 외부의 UI 업데이트
package com.example.app;
import java.util.Random;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
public class MainActivity extends Activity {
private Button b;
public ImageView I1;
public ImageView I2;
public ImageView I3;
public ImageView I4;
public TextView T;
public TextView s;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
I1=new ImageView(this);
I1=(ImageView) findViewById(R.id.imag1);
I1.setVisibility(View.INVISIBLE);
I2=new ImageView(this);
I2=(ImageView) findViewById(R.id.imag2);
I2.setVisibility(View.INVISIBLE);
I3=new ImageView(this);
I3=(ImageView) findViewById(R.id.imag3);
I3.setVisibility(View.INVISIBLE);
I4=new ImageView(this);
I4=(ImageView) findViewById(R.id.imag4);
I4.setVisibility(View.INVISIBLE);
T=(TextView)findViewById(R.id.time);
s=(TextView)findViewById(R.id.score);
Thread t=new Thread(new MyThread());
t.start();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
private class MyThread implements Runnable{
Random randomGenerator = new Random();
int n;
public void run(){
while(true){
n=randomGenerator.nextInt(8);
if(n==1){
I1.setVisibility(View.VISIBLE);
}
if(n==2){
I2.setVisibility(View.VISIBLE);
}
if(n==3){
I3.setVisibility(View.VISIBLE);
}
if(n==4){
I4.setVisibility(View.VISIBLE);
}
try {
Thread.currentThread().sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.getStackTrace();
}
}
}
}
}
의 포스트 방법을 사용할 수 있습니다, 당신의 코드는 설계 결함을 가지고있다. 메인 스레드와 다른 스레드가 UI를 업데이트해서는 안됩니다. 설명서를 읽으 려한다면 귀찮습니다. 그러나 안드로이드는 다른 스레드가 보내고있는 UI에서 UI를 업데이트 할 수있는 도구를 제공하지만 문서를 읽어야 방법을 파악할 수 있습니다. –
특정 문서에 대한 링크를 제게 알려주십시오. –
여기서부터 시작하기 : [Processes and Thread] (http://developer.android.com/guide/components/processes-and-threads.html) –