android-discuss icon indicating copy to clipboard operation
android-discuss copied to clipboard

在一个APP启动另一个一启动会crash的APP导致APP的当前Activity被关闭

Open sascsy opened this issue 10 years ago • 11 comments

crash sample app:

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        throw new RuntimeException("crash");
    }
}

然后再另一个app的按钮listener启动这个app launch sample app:

public class HomeActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.home_layout);
        findViewById(R.id.amltBtn).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    Intent installIntent = getPackageManager().getLaunchIntentForPackage("com.mediav.crashapp");
                    startActivity(installIntent);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
}

结果点按钮系统会给个crash sample app已停止的提示框,但launch sample app的当前Activity也退出来了。logcat没看到launch sample app报任何警告和错误信息。

这个问题郁闷我好久了,大家知道是什么原因引起的吗?

sascsy avatar Jun 17 '15 06:06 sascsy

换台手机试过吗? 这个installIntent是不是要添加flags?

2015-06-17 14:29 GMT+08:00 sascsy [email protected]:

crash sample app:

public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); throw new RuntimeException("crash"); } }

然后再另一个app的按钮listener启动这个app launch sample app:

public class HomeActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.home_layout); findViewById(R.id.amltBtn).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { try { Intent installIntent = getPackageManager().getLaunchIntentForPackage("com.mediav.crashapp"); startActivity(installIntent); } catch (Exception e) { e.printStackTrace(); } } }); } }

结果点按钮系统会给个crash sample app已停止的提示框,但launch sample app的当前Activity也退出来了。logcat没看到launch sample app报任何警告和错误信息。

这个问题郁闷我好久了,大家知道是什么原因引起的吗?

— Reply to this email directly or view it on GitHub https://github.com/android-cn/android-discuss/issues/192.

spysoos avatar Jun 17 '15 07:06 spysoos

换台手机试过吗? 这个installIntent是不是要添加flags?

我在HTC D826w和小米4测试过,都有这个问题。而且启动app的startActivity无论是写在子线程、service、甚至独立进程的service也都能重现这个问题。NET_TASK的FLAG也加过。@spysoos

sascsy avatar Jun 17 '15 07:06 sascsy

Context.startActivity()启动的Activity和当前的Activity是在同一个任务栈里面吧。如果崩溃的话(应该)会导致整个任务栈被移除。

你把HomeActivitylaunchMode设置为singleInstance模式试试?

mthli avatar Jun 18 '15 09:06 mthli

Context.startActivity()启动的Activity和当前的Activity是在同一个任务栈里面吧。如果崩溃的话(应该)会导致整个任务栈被移除。

你把HomeActivity的launchMode设置为singleInstance模式试试?

试了下还是不行 我感觉这种方式应该和NEW_TASK的Flag效果类似

sascsy avatar Jun 19 '15 10:06 sascsy

把 HomeActivity 指定在 另一个 process 中运行, 这样 即使 HomeActivity 崩溃了, 对主程序不会产生影响

shen330 avatar Jun 22 '15 08:06 shen330

把 HomeActivity 指定在 另一个 process 中运行, 这样 即使 HomeActivity 崩溃了, 对主程序不会产生影响

无效果 而且进程没有崩溃 也没有抛异常 只是HomeActivity被系统finish了

sascsy avatar Jun 25 '15 05:06 sascsy

override fun onStop() {
    super.onStop()
}

我试了下在当前的Activity加上这个后它就不会被关闭了

paxoscn avatar Nov 18 '24 07:11 paxoscn

感谢您的关注,我会尽快给您答复

hanyueziad avatar Nov 18 '24 07:11 hanyueziad

你好,邮件已收到,谢谢

nickalc avatar Nov 18 '24 07:11 nickalc

这是来自QQ邮箱的假期自动回复邮件。   您好,我最近正在休假中,无法亲自回复您的邮件。我将在假期结束后,尽快给您回复。

272664150 avatar Nov 18 '24 07:11 272664150

这是来自QQ邮箱的自动回复邮件。   您好,您的邮件已收到。如有后续我查收后会立刻联系您。如在假期,我将在假期结束后,尽快给您回复。

rotyan avatar Nov 18 '24 07:11 rotyan