-Tiger- 2017-12-27 04:39 采纳率: 33.3%
浏览 1209
已采纳

finsh()杀死进程 第一次无效返回上一次活动 第二次才能杀死

点按Button3,会回到SecondActivity ,再进入thirdActivity 点按button3 才能杀死程序

package com.example.activitytest;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

public class ThirdActivity extends BaseActivity {

@Override
protected void onDestroy() {
    super.onDestroy();
    Log.d("ThirdActivity","onDestroy");

}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.d("ThirdActivity","Task id is " + getTaskId());
    setContentView(R.layout.third_layout);
    Button button3 = (Button) findViewById(R.id.button_3);
    button3.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ActivityCollector.finishAll();
        }
    });
}

}

package com.example.activitytest;

import android.app.Activity;

import java.util.ArrayList;
import java.util.List;

public class ActivityCollector {

public static List<Activity> activities = new ArrayList<>();

public static void addActivity(Activity activity) {
    activities.add(activity);
}

public static void removeActivity(Activity activity) {
    activities.remove(activity);
}

public static void finishAll() {
    for (Activity activity : activities) {
        if (!activity.isFinishing()) {
            activity.finish();
            android.os.Process.killProcess(android.os.Process.myPid());
        }
    }
    activities.clear();
}

}

点按button 3 返回Secondactivity时候的logcat
12-26 23:31:29.667 4664-4664/? I/art: Late-enabling -Xcheck:jni
12-26 23:31:29.668 4664-4664/? W/art: Unexpected CPU variant for X86 using defaults: x86
12-26 23:31:30.152 4664-4664/com.example.activitytest W/System: ClassLoader referenced unknown path: /data/app/com.example.activitytest-2/lib/x86
12-26 23:31:30.202 4664-4664/com.example.activitytest I/InstantRun: starting instant run server: is main process
12-26 23:31:30.419 4664-4664/com.example.activitytest W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
12-26 23:31:30.460 4664-4664/com.example.activitytest D/BaseActivity: SecondActivity
12-26 23:31:30.474 4664-4664/com.example.activitytest D/SecondActivity: Task id is 115
12-26 23:31:31.403 4664-4681/com.example.activitytest D/libEGL: Emulator has host GPU support, qemu.gles is set to 1.
12-26 23:31:31.406 4664-4681/com.example.activitytest E/libEGL: load_driver(/system/lib/egl/libGLES_emulation.so): dlopen failed: library "/system/lib/egl/libGLES_emulation.so" not found
12-26 23:31:31.413 4664-4681/com.example.activitytest D/libEGL: loaded /system/lib/egl/libEGL_emulation.so
12-26 23:31:31.418 4664-4681/com.example.activitytest D/libEGL: loaded /system/lib/egl/libGLESv1_CM_emulation.so
12-26 23:31:31.452 4664-4681/com.example.activitytest D/libEGL: loaded /system/lib/egl/libGLESv2_emulation.so
12-26 23:31:31.534 4664-4681/com.example.activitytest I/OpenGLRenderer: Initialized EGL, version 1.4
12-26 23:31:31.534 4664-4681/com.example.activitytest D/OpenGLRenderer: Swap behavior 1
12-26 23:31:31.584 4664-4664/com.example.activitytest W/art: Before Android 4.1, method int android.support.v7.widget.ListViewCompat.lookForSelectablePosition(int, boolean) would have incorrectly overridden the package-private method in android.widget.ListView
12-26 23:31:31.713 4664-4681/com.example.activitytest E/EGL_emulation: tid 4681: eglSurfaceAttrib(1174): error 0x3009 (EGL_BAD_MATCH)
12-26 23:31:31.713 4664-4681/com.example.activitytest W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0xd73bace0, error=EGL_BAD_MATCH

  • 写回答

5条回答 默认 最新

  • 山洼之神 2017-12-27 08:48
    关注

    public static void finishAll() {
    for (Activity activity : activities) {
    if (!activity.isFinishing()) {
    activity.finish();
    android.os.Process.killProcess(android.os.Process.myPid());
    }
    }
    activities.clear();
    }
    试试改成:
    public static void finishAll() {
    for (Activity activity : activities) {
    if (!activity.isFinishing()) {
    activity.finish();
    }
    }
    activities.clear();
    android.os.Process.killProcess(android.os.Process.myPid());
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作