- 使用靜態變量來處理
View
緩存。
- 使用
AsyncTask
以不凍結你的出身Activity
- 使用
LayoutInflater
膨脹的View
佈局,並將它緩存
- 在目標活動的
onCreate()
設置緩存
事情是這樣的:
原產活動
...
//noinspection unchecked
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
LayoutInflater inflater = (LayoutInflater)
MainParentActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// VERY VERY SLOW action if your Activity is heavy
DialerActivity.cachedView = inflater.inflate(R.layout.dialer_portrait, null, false);
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
Intent intent = new Intent(MainParentActivity.this, DialerActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intent);
}
}.execute();
...
目標活動
public class DialerActivity extends MainParentActivity {
static View cachedView = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (cachedView != null) {
setContentView(cachedView);
} else {
setContentView(R.layout.dialer_portrait);
}
}
. . .
你也可以使用一個ProgressDialog而膨脹,以避免在過渡凍結的感覺。