如何以编程方式崩溃Android应用程序?

How*_*ard 26 java eclipse android

我想测试崩溃报告,acra但第一步是我需要使用代码模拟Android中的致命崩溃.

任何的想法?

Vin*_*kla 57

Just execute this code: divide by zero
Run Code Online (Sandbox Code Playgroud)

更新:也可以试试这个创建方法,

public void stackOverflow() {
        this.stackOverflow();

    }
Run Code Online (Sandbox Code Playgroud)

并在某处调用/ buttonClick

或者简单地抛出未捕获的异常

throw new RuntimeException("This is a crash");
Run Code Online (Sandbox Code Playgroud)

答对了!


Jox*_*aex 21

  1. 访问未定义的视图.
  2. 无需检查即可访问空列表的第一个元素.
  3. 除以零.
  4. 将设备扔出窗外.
  5. 将设备浸入水中.

顺便说一句,这一个愚蠢的问题.

  • 4.和5.看起来非常有希望 (24认同)
  • 同意你的最后一句话以及4和5是可靠的点可能会让设备超出界限; P (7认同)

Chi*_*rag 9

不要在Android Manifest中声明活动.


Luk*_*lor 8

您可以尝试Null Pointer异常.

Integer i = null;
Run Code Online (Sandbox Code Playgroud)

然后调用该对象上的任何方法.

i.byteValue();
Run Code Online (Sandbox Code Playgroud)

在尚未初始化的对象上调用方法将使应用程序崩溃.

  • 你可以在它前面添加`if(1 == 1)`来欺骗编译器进行编译. (3认同)

Kum*_*tra 6

一个非常简单的方法......并且非常重要的是要理解它为什么会发生.

尝试发起一个变量onCreate()的前setContentView()法,然后用它来调用一个方法或变量或尝试注册到一些听众..

例如:

Button b;

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        b = (Button)findViewById(R.id.butt);
        b.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {


        }
    });
        setContentView(R.layout.main);


    }
Run Code Online (Sandbox Code Playgroud)

这崩溃了,因为 setContentView() main.xml布局中没有组件/视图得到它们的ID之前.


小智 5

只需在main.xml中创建一个如下所示的按钮:

 <Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="crash"
    android:text="Crash me" />
Run Code Online (Sandbox Code Playgroud)

然后运行您的应用程序并单击崩溃