因此,我使用viewPager进行了一个活动,并且在viewPager.setAdapter
工作后立即崩溃。这是崩溃日志。java.lang.OutOfMemoryError:未能分配
java.lang.OutOfMemoryError: Failed to allocate a 26488162 byte allocation with 16777216 free bytes and 24MB until OOM
at java.lang.StringFactory.newStringFromChars(Native Method)
at java.lang.AbstractStringBuilder.toString(AbstractStringBuilder.java:629)
at java.lang.StringBuffer.toString(StringBuffer.java:723)
at java.io.StringWriter.toString(StringWriter.java:100)
at android.util.Log.getStackTraceString(Log.java:345)
at com.android.internal.os.RuntimeInit.Clog_e(RuntimeInit.java:61)
at com.android.internal.os.RuntimeInit.-wrap0(RuntimeInit.java)
at com.android.internal.os.RuntimeInit$UncaughtHandler.uncaughtException(RuntimeInit.java:86)
at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693)
at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)
下面是活动的类
public class SetupActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_setup);
ViewPager setupPager = (ViewPager) findViewById(R.id.setupViewpager);
SetupPagerAdapter setupPagerAdapter = new SetupPagerAdapter(getSupportFragmentManager());
setupPager.setAdapter(setupPagerAdapter);
}
}
这里的SetupPagerAdapter
public class SetupPagerAdapter extends FragmentPagerAdapter {
public SetupPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
if(position == 0){
return new SetupFragmentOne().newInstance();
}
return null;
}
@Override
public int getCount() {
return 1;
}
}
和这里的SetupFragmentOne
public class SetupFragmentOne extends Fragment {
public SetupFragmentOne newInstance() {
SetupFragmentOne fragment = new SetupFragmentOne();
return fragment;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.setup_fragment_1, container);
Typeface typeface = Typeface.createFromAsset(getContext().getAssets(),"coolvetica_rg.ttf");
TextView tv = (TextView) view.findViewById(R.id.setupText1);
tv.setTypeface(typeface);
return view;
}
}
你需要弄清楚为什么你的应用程序使用这么多的内存。你有很多大图片吗?你有没有内存泄漏?这些是你需要跟踪并修复的东西。 –