Android捕获全局异常

    String message = throwable.getMessage();

    String localizedMessage = throwable.getLocalizedMessage();

    Log.i("KqwException", "------------------------------------------------------");

    Log.i("KqwException", "threadId = " + threadId);

    Log.i("KqwException", "message = " + message);

    Log.i("KqwException", "localizedMessage = " + localizedMessage);

    Log.i("KqwException", "------------------------------------------------------");

    throwable.printStackTrace();

    Log.i("KqwException", "------------------------------------------------------");



    // TODO 下面捕获到异常以后要做的事情,可以重启应用,获取手机信息上传到服务器等

    Log.i("KqwException", "------------------应用被重启----------------");

    // 重启应用

    mContext.startActivity(mContext.getPackageManager().getLaunchIntentForPackage(mContext.getPackageName()));

    //干掉当前的程序

    android.os.Process.killProcess(android.os.Process.myPid());

}

}




使用

--



> 在Application下添加Handler



### 注册Application



> 在清单文件下添加name属性



<application

……

android:name=".InitApplication"

…… >

<activity

    …… >

    <intent-filter>

        ……

    </intent-filter>

</activity>



> Application



package com.example.kongqw.exceptiondemo;

import android.app.Application;

/**

  • Created by kongqw on 2015/11/3.

*/

public class InitApplication extends Application {

@Override

public void onCreate() {

    super.onCreate();



    KqwException handler = KqwException.getInstance(this);

    Thread.setDefaultUncaughtExceptionHandler(handler);

}

}




测试类

---



package com.example.kongqw.exceptiondemo;

import android.app.Activity;

import android.os.Bundle;

import android.support.design.widget.FloatingActionButton;

import android.support.design.widget.Snackbar;

import android.support.v7.app.AppCompatActivity;

import android.support.v7.widget.Toolbar;

import android.view.View;

import android.view.Menu;

import android.view.MenuItem;

import android.widget.Toast;

public class MainActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);



}



public void bug(View view) {

    Toast.makeText(this, "程序崩溃", Toast.LENGTH_SHORT).show();

    // 除数为0 导致程序崩溃

    int a = 1 / 0;

}

}




XML布局

-----



<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android=“http://schemas.android.com/apk/res/android”

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

app:layout_behavior="@string/appbar_scrolling_view_behavior"

tools:context=".MainActivity"

tools:showIn="@layout/activity_main">



<Button

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    android:onClick="bug"

    android:text="点击程序崩溃" />
  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值