您的位置:首页 > 其它

最近项目开发中遇到的各种小问题和技巧

2015-12-28 17:06 417 查看
1.eclipse突然变得非常的卡,而且经常卡死不动

  原因:内存不足所以会卡死。

  解决:配置一下eclipse.ini修改这几个值就好了

-XX:MaxPermSize=768m
-Xms1024m
-Xmx3072m
2.调用百度视频SDK出现问题
(1).报错:
Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x0
原因:引用的SDK的类BMediaController所指向的drawable资源文件没有导入
解决:导入drawable资源
(2).报错:
D/AndroidRuntime( 5603): Shutting down VM
E/AndroidRuntime( 5603): FATAL EXCEPTION: main
E/AndroidRuntime( 5603): java.lang.UnsatisfiedLinkError: Couldn't load cyberplayer-core: findLibrary returned null

原因:无法定位加入的libcyberplayer-core.so和libcyberplayer.so
解决:在libs下新建一个armeabi-v7a,然后将libcyberplayer-core.so和libcyberplayer.so复制一份到该文件夹” 如果这个不行,
那么新建一个armeabi文件夹再放入libcyberplayer-core.so和libcyberplayer.so就可以了。
3.使用fragment懒加载 避免初始化大量资源
使用方法:布局文件添加<com.myface.view.SwipyRefreshLayout>如下
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:orientation="vertical" >

<com.myface.view.SwipyRefreshLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/swipe_container"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<ListView
android:id="@+id/VideoListView"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
</ListView>
</com.myface.view.SwipyRefreshLayout>
</LinearLayout>

可以让我们的Fragment 直接继承LazyFragment 然后重写lazyLoad()方法实现懒加载

public class MyFaceChoiceFragment extends LazyFragment {
private View view;
private ListView listView;
// 标志位,标志已经初始化完成。
    private boolean isPrepared;
@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.fragment_myfaceclassroom, container, false);
        isPrepared = true;
        lazyLoad();
        return view;
    }
 @Override
    protected void lazyLoad() {
        if (!isPrepared || !isVisible) {
            return;
        }
        initView();
    }
  private void initView() {
         listView = (ListView) view.findViewById(R.id.VideoListView);
}
}
import android.support.v4.app.Fragment;

public abstract class LazyFragment extends Fragment {
protected boolean isVisible;

/**
* 在这里实现Fragment数据的缓加载.
*
* @param isVisibleToUser
*/
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (getUserVisibleHint()) {
isVisible = true;
onVisible();
} else {
isVisible = false;
onInvisible();
}
}

protected void onVisible() {
lazyLoad();
}

protected abstract void lazyLoad();

protected void onInvisible() {
}
}

4.横竖屏切换

Android中要让一个程序的界面不随手机方向转动而产生横竖屏切换的方法: 只要在AndroidManifest.xml里面配置就可以了。在AndroidManifest.xml的activity配置中加入android:screenOrientation=”landscape”属性即可(landscape是横向,portrait是纵向)。

需要注意的是,android中每次屏幕方向切换时都会重启Activity,所以我们应该在Activity被销毁前保存当前活动的状态,在Activity再次Create的时候载入配置,那样,进行中的游戏就不会自动重启了!要避免在转屏时重启activity,可以通过在androidmanifest.xml文件中重新定义方向,添加activity属性  android:configChanges=”keyboardHidden|orientation”即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: