1、調(diào)用webview的頁面應(yīng)及時銷毀靶剑,防止內(nèi)存泄漏(具體如下):
@Override
protected void onDestroy() {
try {
if( webView!=null) {
ViewParent parent = webView.getParent();
if (parent != null) {
((ViewGroup) parent).removeView(webView);
}
webView.stopLoading();
// 退出時調(diào)用此方法稠茂,移除綁定的服務(wù)噪沙,否則某些特定系統(tǒng)會報錯
webView.getSettings().setJavaScriptEnabled(false);
webView.clearHistory();
webView.clearView();
webView.removeAllViews();
webView.destroy();
}
} catch (Exception e) {
e.printStackTrace();
}
super.onDestroy();
}
2、scrollView設(shè)置android:fillViewport="true",使scrollview的子控件能夠充滿屏幕莹规。
3、viewpager中的fragment的一些設(shè)置技巧
public class FragmentInViewPager extends Fragment {
private Object netData;
private boolean isCreated = false;
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
if (!isVisibleToUser && isCreated) {
//從該界面中離開的一些操作
}
super.setUserVisibleHint(isVisibleToUser);
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
if (netData == null) {
//請求網(wǎng)絡(luò)獲取數(shù)據(jù)
} else {
setData(netData);
}
isCreated = true;
return super.onCreateView(inflater, container, savedInstanceState);
}
private void setData(Object netData) {
//UI數(shù)據(jù)設(shè)置
}
@Override
public void onDestroyView() {
super.onDestroyView();
isCreated = false;
}
}
4泌神、scrollview包含recycleview的一些常見問題解決方案(注意使用NestedScrollView代替scrollview)
recyclerView.setLayoutManager(new LinearLayoutManager(this){
@Override
public boolean canScrollVertically() {
//解決ScrollView里存在多個RecyclerView時滑動卡頓的問題
//如果你的RecyclerView是水平滑動的話可以重寫canScrollHorizontally方法
return false;
}
});
//解決數(shù)據(jù)加載不完的問題
recyclerView.setNestedScrollingEnabled(false);
recyclerView.setHasFixedSize(true);
//解決數(shù)據(jù)加載完成后, 沒有停留在頂部的問題
recyclerView.setFocusable(false);
5良漱、recyclerview的上拉加載更多推薦使用以下方式
recyclerview.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
if (newState == RecyclerView.SCROLL_STATE_IDLE
&& !recyclerView.canScrollVertically(1)
&& !isLoading) {
isLoading = true;
//上拉加載更多操作
//...
} else if (newState == RecyclerView.SCROLL_STATE_IDLE
&& !recyclerView.canScrollVertically(-1)
&& !isLoading) {
isLoading = true;
//下拉刷新操作,也可以使用SwipeRefreshLayout提供的下拉刷新
//...
}
}
});
如果不滿一屏無需上拉加載更多推薦使用以下方式
recyclerview.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
if (newState == RecyclerView.SCROLL_STATE_IDLE
&& recyclerView.canScrollVertically(-1)
&& !recyclerView.canScrollVertically(1)
&& !isLoading) {
isLoading = true;
//上拉加載更多操作
//...
}
}
});
6欢际、進行了某個操作想退出應(yīng)用母市,可以使用這樣的技巧
//回到桌面
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);