【问题标题】:Activity crashed due to memory overflowActivity 因内存溢出而崩溃
【发布时间】:2013-12-05 13:36:23
【问题描述】:

这是我设置壁纸的代码,其中我集成了 admob 插页式广告,但是当我按下返回并转到另一个活动时,它崩溃了。帮我。我的 logcat 在 setContentView(R.layout.activity_x4) 上显示错误;

public class X4Activity extends Activity implements AdListener,
    OnClickListener {

ImageView display, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10;
int to;
Button set, save, rate;
InterstitialAd interstitial;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);

    setContentView(R.layout.activity_x4);

    interstitial = new InterstitialAd(this, "a15270cbf9bb519");


    AdRequest adRequest = new AdRequest();


    interstitial.loadAd(adRequest);


    interstitial.setAdListener(this);
    to = R.drawable.x24;

    display = (ImageView) findViewById(R.id.zimage);
    c1 = (ImageView) findViewById(R.id.x1);
    c2 = (ImageView) findViewById(R.id.x2);
    c3 = (ImageView) findViewById(R.id.x3);
    c4 = (ImageView) findViewById(R.id.x4);
    c5 = (ImageView) findViewById(R.id.x5);
    c6 = (ImageView) findViewById(R.id.x6);
    c7 = (ImageView) findViewById(R.id.x7);
    c8 = (ImageView) findViewById(R.id.x8);
    c9 = (ImageView) findViewById(R.id.x9);
    c10 = (ImageView) findViewById(R.id.x10);
    rate = (Button) findViewById(R.id.rate);
    set = (Button) findViewById(R.id.set);
    save = (Button) findViewById(R.id.save);

    c1.setOnClickListener(this);
    c2.setOnClickListener(this);
    c3.setOnClickListener(this);
    c4.setOnClickListener(this);
    c5.setOnClickListener(this);
    c6.setOnClickListener(this);
    c7.setOnClickListener(this);
    c8.setOnClickListener(this);
    c9.setOnClickListener(this);
    c10.setOnClickListener(this);

    set.setOnClickListener(this);

    rate.setOnClickListener(this);
    save.setOnClickListener(this);

}

@Override
public void onReceiveAd(Ad ad) {
    Log.d("OK", "Received ad");
    if (ad == interstitial) {
        interstitial.show();
    }
}


public void onClick(View v) {

    String fName;
    // TODO Auto-generated method stub
    switch (v.getId()) {
    case R.id.x1:
        display.setImageResource(R.drawable.x24);
        to = R.drawable.x24;
        break;
    case R.id.x2:
        display.setImageResource(R.drawable.x25);
        to = R.drawable.x25;
        break;

    case R.id.x3:
        display.setImageResource(R.drawable.x26);
        to = R.drawable.x26;
        break;
    case R.id.x4:
        display.setImageResource(R.drawable.x27);
        to = R.drawable.x27;
        break;
    case R.id.x5:
        display.setImageResource(R.drawable.x28);
        to = R.drawable.x28;
        break;
    case R.id.x6:
        display.setImageResource(R.drawable.x29);
        to = R.drawable.x29;
        break;
    case R.id.x7:
        display.setImageResource(R.drawable.x30);
        to = R.drawable.x30;
        break;
    case R.id.x8:
        display.setImageResource(R.drawable.x31);
        to = R.drawable.x31;
        break;
    case R.id.x9:
        display.setImageResource(R.drawable.x32);
        to = R.drawable.x32;
        break;
    case R.id.x10:
        display.setImageResource(R.drawable.x33);
        to = R.drawable.x33;
        break;

    case R.id.set:

        ***********
    case R.id.save:
        **********

}

}
@Override
public void onBackPressed() {
   X4Activity.this.finish();
}
@Override
public void onDismissScreen(Ad arg0) {
    // TODO Auto-generated method stub

}

@Override
public void onFailedToReceiveAd(Ad arg0, ErrorCode arg1) {
    // TODO Auto-generated method stub

}

@Override
public void onLeaveApplication(Ad arg0) {
    // TODO Auto-generated method stub

}
@Override
public void onPresentScreen(Ad arg0) {
    // TODO Auto-generated method stub

}
}

【问题讨论】:

  • 请显示堆栈跟踪,以便我们看到确切的错误。

标签: android memory android-activity


【解决方案1】:

考虑到你知道你为什么需要这个,请告诉我你为什么需要:

@Override
public void onBackPressed() {
   X4Activity.this.finish();
}

因此,您正在终止您的“主要”活动。

【讨论】:

  • 这只是复制了onBackPressed() 的默认超类实现所做的并且不是问题。
  • 那么 StackTrace 是绝对必要的。
  • 作为 android 的初学者,你能告诉我什么是 stacktrace 吗?日志猫?
  • 简而言之-如果您使用的是Eclipse(默认外观- JAVA)-右侧有一个名为LogCat的选项卡,堆栈跟踪所在的位置。有关什么是堆栈跟踪的更多信息 - 请参阅搜索引擎,但这是编程的重要部分。请不要告诉我你也不知道调试是什么。
猜你喜欢
  • 1970-01-01
  • 2012-02-22
  • 1970-01-01
  • 1970-01-01
  • 2022-01-08
  • 1970-01-01
  • 1970-01-01
  • 2013-04-18
  • 2014-03-29
相关资源
最近更新 更多