我有一个活动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);
.....
}
答案 0 :(得分:0)
将bookinfo=getResultByIsbn(tempIsbn);
移至另一个主题。使用Java线程或AsyncTask来执行此操作。
答案 1 :(得分: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);
}
}
答案 2 :(得分:0)
一个简单的线程可以在你的活动B的oncreate函数中完成这个技巧:
new Thread(new Runnable() {
@Override
public void run() {
bookinfo=getResultByIsbn(tempIsbn);
runOnUiThread(new Runnable() {
@Override
public void run() {
// Update UI
}
});
}
}).start();