独辟蹊径之android程序完全退出的一种途径 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

   

    最近做一个项目时,意外发现了一种可以让android程序完全退出的一种途径,遥想当年为了找到一种有效地途径让android程序完全退出时的窘迫,不由得有些感慨,

独辟蹊径之android程序完全退出的一种途径

。这里不敢独享,和大家分享一下,也是抛砖引玉,希望有大牛出来继续探讨一下这个问题。

    方法很简单,其实就是一层窗户纸,知道了,就明白了。用jni调用linux系统调用exit即可。下面给出具体实现:

    ?

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    package com.example.bitmaptest;

    import android.util.Log;

    public final class AppUtils {

    private static final String TAG = "AppUtils";

    static {

    System.loadLibrary("appUtils");

    }

    private native void native_exit();

    public void exit() {

    Log.d(TAG, "exit");

    if (listener != null) {

    listener.onExit();

    }

    native_exit();

    }

    public static interface OnExitListener {

    void onExit();

    }

    private OnExitListener listener;

    public void setOnExitListener(OnExitListener listener) {

    this.listener = listener;

    }

    public OnExitListener getOnExitListener() {

    return listener;

    }

    }

    jni实现如下:

    ?

    1

    2

    3

    4

    5

    6

    7

    JNIEXPORT void JNICALL Java_com_example_bitmaptest_AppUtils_native_1exit

    (JNIEnv * env, jobject obj) {

    exit(0);

    return;

    }

    备注:使用该方法后,log里会发现如下内容:

    06-15 09:20:49.316: I/ActivityManager(805): Process com.example.bitmaptest (pid 5784) has died.

    06-15 09:20:49.316: I/WindowState(805): WIN DEATH: Window{4214d2f0 u0 com.example.bitmaptest/com.example.bitmaptest.MainActivity}

    但是这里由于要完全退出app,所以窃以为无所谓了,

电脑资料

独辟蹊径之android程序完全退出的一种途径》(https://www.unjs.com)。

最新文章