Android UI线程是如何工作的?

Android UI线程是如何工作的?,android,multithreading,user-interface,android-asynctask,Android,Multithreading,User Interface,Android Asynctask,我是Android开发的初学者,我在Android的UI上有点问题 我的代码如下所示: public class MainActivity extends Activity{ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Text

我是Android开发的初学者,我在Android的UI上有点问题

我的代码如下所示:

public class MainActivity extends Activity{
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView tv1 = (TextView) findViewById(R.id.textView1);
        TextView tv2 = (TextView) findViewById(R.id.textView2);

        tv1.setVisibility(View.GONE);
        tv2.setVisibility(View.GONE);

        String s="abc";
        MyAsyncTask BkGroundTask = new MyAsyncTask(); 
        BkGroundTask.execute(s);
        try {
            s = BkGroundTask.get();
        } catch (InterruptedException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();}

        tv1.setVisibility(View.VISIBLE);
        tv2.setVisibility(View.VISIBLE);

    }
}
但在AsyncTask运行时,tv1和tv2不会消失。
我应该怎么做才能解决这个问题?

这已经讨论过很多次了,但我会再次解释您想要什么,因为您需要一个特殊的场景

你几乎永远都不想使用.get,因为它是一个阻塞调用。这意味着它将锁定您的UI,直到任务完成。执行,正如你所拥有的,是你想要的

如果希望它们在任务运行时消失,并在任务完成时再次可见,那么您希望将代码放在onPostExecute内部(如果是内部类),如果不是,则可以使用onPostExecute对活动的回调,并在回调方法中显示它们


asynctask以异步方式执行,假设调用execute时所有内容都会暂停,这是错误的,并且会破坏asynctask的目的。事实上,它正在消失,但随后又重新出现。这件事发生得太快了,你可能根本没注意到

如果要在任务完成时显示textview,则需要在任务的onpostexecute中执行该操作

范例

@Override
public void onPostExecute(Void void){
    tv1.setVisibility(View.VISIBLE);
    tv2.setVisibility(View.VISIBLE);
}

我在这里没有看到异步任务,但我认为应该在异步任务的onPreExecute或onPostExecute方法中使文本视图消失,因为这些方法可以访问UI