1、调用webview的页面应及时销毁,防止内存泄漏(具体如下):
@Override
protected void onDestroy() {
try {
if( webView!=null) {
ViewParent parent = webView.getParent();
if (parent != null) {
((ViewGroup) parent).removeView(webView);
}
webView.stopLoading();
// 退出时调用此方法,移除绑定的服务,否则某些特定系统会报错
webView.getSettings().setJavaScriptEnabled(false);
webView.clearHistory();
webView.clearView();
webView.removeAllViews();
webView.destroy();
}
} catch (Exception e) {
e.printStackTrace();
}
super.onDestroy();
}
2、scrollView设置android:fillViewport="true",使scrollview的子控件能够充满屏幕。
3、viewpager中的fragment的一些设置技巧
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) {
//请求网络获取数据
} else {
setData(netData);
}
isCreated = true;
return super.onCreateView(inflater, container, savedInstanceState);
}
private void setData(Object netData) {
//UI数据设置
}
@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;
}
});
//解决数据加载不完的问题
recyclerView.setNestedScrollingEnabled(false);
recyclerView.setHasFixedSize(true);
//解决数据加载完成后, 没有停留在顶部的问题
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、进行了某个操作想退出应用,可以使用这样的技巧
//回到桌面
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);