0

我有一个活动 A 来启动另一个活动 B。在活动 B 中,有一些功能可以从互联网下载资源。当A跳转到B时,我想立即显示B'view。实际上,B'view会隐藏,直到所有功能准备好。我想 B 在处理数据时显示“正在搜索....”。

A:
    Intent intent = new Intent(A.this, B.class);
    intent.putExtra("result",obj.getText());
    A.this.startActivity(intent);


B:
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.success);
        TextView text = (TextView)this.findViewById(R.id.textview);
        text.setText("searching....");         
        Bundle bun= getIntent().getExtras();
        String tempIsbn=bun.getString("result");

        //some functions
        bookinfo=getResultByIsbn(tempIsbn);
                  .....
    }
4

3 回答 3

0

你可以AsyncTask隐藏和显示你的结果

private class PerformTask extends AsyncTask<Void, Void, Void>{

    @Override
    protected void onPreExecute() {
        /**
                      * display view to show progress
                      **/
        super.onPreExecute();
    }

    @Override
    protected Void doInBackground(Void... params) {
        bookinfo=getResultByIsbn(tempIsbn);
        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        /**
                      * hide progress
                      * display results
                      **/
        super.onPostExecute(result);
    }
}
于 2012-08-20T12:42:05.543 回答
0

一个简单的线程可以在活动 B 的 oncreate 函数中完成任务:

new Thread(new Runnable() {

        @Override
        public void run() {

            bookinfo=getResultByIsbn(tempIsbn);

            runOnUiThread(new Runnable() {

                @Override
                public void run() {
                    // Update UI

                }
            });

        }
    }).start();
于 2012-08-20T13:10:32.243 回答
0

移动bookinfo=getResultByIsbn(tempIsbn);到另一个线程。使用 Java 线程或 AsyncTask 来执行此操作。

于 2012-08-20T12:40:39.027 回答