ringa_lee2017-04-17 17:01:11
1.使用replace,替換當前的fragment
2.使用add 和hide 方法,要顯示哪個就顯示哪個,其他的則隱藏即可,這樣相比於第一種在每次切換時不用每次都去載入一次數據,但是記憶體消耗上稍大
會載入目前的fragment 和其相鄰的Fragment為viewpager滑動做準備
只載入目前的Fragment
建議在選擇切換策略時選擇第二種
伊谢尔伦2017-04-17 17:01:11
你的1,2問題你完全可以自己打Log實現查看,這樣以後印象深刻,更有效果。
至於刷新的不知道你是怎麼樣的函數,最後一個其實只要在onKeyDown中判斷,你把這段程式碼運用上去應該沒什麼問題了:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
//防止按一次退出
if (System.currentTimeMillis() - mExitTime > 2000) {
ToastUtils.showShort("再按一次回到桌面");
mExitTime = System.currentTimeMillis();
} else {
finish();
}
return true;
}
return super.onKeyDown(keyCode, event);
}
大家讲道理2017-04-17 17:01:11
finish只是結束目前的activity,讓你的所有activity都繼承下面這個activity就能實現你想要的效果。當然還有其他方法就得靠自己查了。
public class BaseActivity extends Activity {
private long exitTime;
BroadcastReceiver exitReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(ExitUtils.EXIT)) {
finish();
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
IntentFilter filter = new IntentFilter();
filter.addAction(ExitUtils.EXIT);
this.registerReceiver(exitReceiver, filter);
exitTime = System.currentTimeMillis();
}
@Override
protected void onDestroy() {
super.onDestroy();
this.unregisterReceiver(exitReceiver);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK
&& event.getAction() == KeyEvent.ACTION_DOWN) {
if ((System.currentTimeMillis() - exitTime) > 2000) {
Toast.makeText(getApplicationContext(), "再按一次退出程序",
Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else {
Intent exitIntent = new Intent();
exitIntent.setAction(ExitUtils.EXIT);
getApplicationContext().sendBroadcast(exitIntent);
}
return true;
}
return false;
}
}