大佬教程收集整理的这篇文章主要介绍了Android – 为什么我的应用程序使用大约40MB的缓存后台进程?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
当我将应用程序推回到背景,点击后退或主页按钮,它在“缓存的后台进程”中使用大约40MB,我不明白为什么.
import android.os.bundle; import android.support.v4.app.Fragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.RelativeLayout; public class Presentation extends Fragment { Boolean isOption = false; RelativeLayout main = null; WebView web_main = null; public Presentation () { } @Override public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceStatE) { super.onCreate(savedInstanceStatE); main = (RelativeLayout) inflater.inflate(R.layout.webview,container,falsE); return main; } @Override public void onActivityCreated(Bundle savedInstanceStatE) { // TODO Auto-generated method stub super.onActivityCreated(savedInstanceStatE); web_main = new WebView(getActivity().getApplicationContext()); web_main.setWebViewClient(new WebViewClient()); web_main.getSetTings().setAppCacheEnabled(false); web_main.loadUrl("file:///android_asset/main.html"); main.removeAllViews(); main.addView(web_main); } @Override public void onDestroy() { super.onDestroy(); Log.i(getClass().getName(),"[OnDestroy]"); main.removeAllViews(); web_main.destroy(); main = null; web_main = null; System.gc(); } }
我遵循几个教程和答案,但对缓存后台进程没有任何影响
这是我的主要活动:
public class AppTest extends FragmentActivity { /** * The {@link android.support.v4.view.PagerAdapter} that will provide * fragments for each of the sections. We use a * {@link android.support.v4.app.FragmentPagerAdapter} derivative,which * will keep every loaded fragment in memory. If this becomes too memory * intensive,it may be best to switch to a * {@link android.support.v4.app.FragmentStatePagerAdapter}. */ SectionsPagerAdapter mSectionsPagerAdapter; /** * The {@link ViewPager} that will host the section contents. */ ViewPager mViewPager; @Override protected void onCreate(Bundle savedInstanceStatE) { super.onCreate(savedInstanceStatE); setContentView(R.layout.main_content); // Create the adapter that will return a fragment for each of the three // priMary sections of the app. mSectionsPagerAdapter = new SectionsPagerAdapter( getSupportFragmentManager()); // Set up the ViewPager with the sections adapter. mViewPager = (ViewPager) findViewById(R.id.pager); mViewPager.setAdapter(mSectionsPagerAdapter); } @Override protected void onStop() { super.onStop(); System.gc(); Log.i(getClass().getName(),"[OnStop]"); android.os.Debug.stopMethodTracing(); } @Override public Boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if @R_772_8913@ present. getMenuInflater().inflate(R.menu.main_content,menu); return true; } @Override protected void onDestroy() { super.onDestroy(); mViewPager.removeAllViews(); Log.i(getClass().getName(),"[OnDestroy]"); } /** * A {@link FragmentPagerAdapter} that returns a fragment corresponding to * one of the sections/tabs/pages. */ public class SectionsPagerAdapter extends FragmentStatePagerAdapter { public SectionsPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { // getItem is called to instantiate the fragment for the given page. // Return a DummySectionFragment (defined as a static inner class // below) with the page number as its lone argument. Fragment fragment = null; switch (position) { case 0: fragment = new Presentation(); break; /* case 1: fragment = new Edition(); break; case 2: fragment = new ProgrAMMe(); break; case 3: fragment = new Twitter(); break; case 4: fragment = new Partenaire(); break; case 5: fragment = new Information(); break;*/ default: fragment = new Presentation(); break; } return fragment; } @Override public int getCount() { // Show 6 @R_16_10586@l pages. return 6; } @Override public CharSequence getPagetitle(int position) { switch (position) { case 0: return "Presentation"; case 1: return "Edition"; case 2: return "Program"; case 3: return "Tweets"; case 4: return "Partners"; case 5: return "Information"; } return null; } } }
谁能看到有什么错误?
据我所知,在“缓存的后台进程”状态中占用的空间将由您的应用程序正在使用的任何位置决定.例如,如果应用程序在前台使用20MB,则如果RAM可用,则占用相同的空间.
如果您的应用程序有3个ImageViews和3个WebViews,它可以很好地占用40MB的RAM空间,这取决于那些ImageViews和WebViews中存储的内容.您可以使用Profiling tools来查看应用程序使用的内存量以及它的组件成分.如果在前台使用的内存与背景状态下的内存类似,那么一切都是应该的.
注意:制造商可能会混淆设置应用程序,并重新定义“缓存后台进程”的含义.在这种情况下,您必须与他们联系,以了解它们如何定义它以及它由何种组成.
以上是大佬教程为你收集整理的Android – 为什么我的应用程序使用大约40MB的缓存后台进程?全部内容,希望文章能够帮你解决Android – 为什么我的应用程序使用大约40MB的缓存后台进程?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。