我正在开发一个使用共享偏好设置文件的应用,它还包含广告。当我第一次打开我的应用程序(从android studio运行)时,我的主要活动需要14-16秒才能加载。缓存后需要2秒钟才能加载。我意识到我在onCreate()方法中放了太多操作。然后我尝试使用onResume(),但它仍然需要相同的时间。我想知道如何缩短启动时间。我的应用使用共享偏好文件,它包含广告。我还注意到我的应用缓存为20MB。 代码如下
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
EditText nme_key = (EditText)findViewById(R.id.name_key);
EditText cls_key = (EditText)findViewById(R.id.class_key);
EditText num_key = (EditText)findViewById(R.id.number_key);
SharedPreferences sharedPreferences = getSharedPreferences(getString(R.string.preference_file_key),MODE_PRIVATE);
nme_key.setText(sharedPreferences.getString("name","name"));
cls_key.setText(sharedPreferences.getString("class","class"));
num_key.setText(sharedPreferences.getString("number","number"));
MobileAds.initialize(getApplicationContext(), "");
mAdView = (AdView) findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().addTestDevice("").build();
mAdView.loadAd(adRequest);
}
我有3个问题
如何缩短应用的启动时间(主题?)
如何减少应用的缓存大小
如何改善应用效果
答案 0 :(得分:0)
我发现广告是导致我的应用启动时间太长的原因。
所以,这就是我的解决方法:
//run in the background
AsyncTask.execute(() -> {
MobileAds.initialize(this, initializationStatus -> {});
//Banner Ad
AdView adView = findViewById(R.id.ad_view);
AdRequest adRequest = new AdRequest.Builder().build();
//Interstitial Ad
mInterstitialAd = new InterstitialAd(this);
mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
//you have to load the Ads in the foreground
this.runOnUiThread(() -> {
adView.loadAd(adRequest);
mInterstitialAd.loadAd(new AdRequest.Builder().build());
});
});
如何显示非页内广告:
button.setOnClickListener(view -> {
//check first, if it is instantiated and loaded
if (mInterstitialAd != null && mInterstitialAd.isLoaded()) {
mInterstitialAd.show();
}
});
但是请注意,这将使您的应用在加载前不显示任何广告就可以启动。 我知道我已经很晚了,但是我希望这会对功能有所帮助。