从另一个应用程序启动Activity时,Android存在延迟

4

我有两个应用程序。 应用程序A和应用程序B只有一个BActivity(应用程序B的包名是:com.ts.share)。 在应用程序A中,我想启动应用程序B。 在应用程序A中,我调用了以下代码:

Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage("com.ts.share");
            LaunchIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity( LaunchIntent );

它能正常工作。

在B处,如果退出B,回到A并再次调用。启动App B需要0秒钟。

但是,在B处,按Home键,回到A并再次调用。启动App B需要3秒钟。

我希望App B能立即启动。

感谢您的帮助!


这个无法通过Java代码处理。这个Intent在应用程序之外运行。 - Tushar Gogna
在A应用程序中创建一个按钮,将上述代码放置在按钮点击监听器中。谢谢。 - Son Nguyen Thanh
我觉得你误解了我的观点。 - Tushar Gogna
1
就像我说的一样,你无法以编程方式处理它。 - Tushar Gogna
1
这个回答解决了你的问题吗?在HOME按钮按下后立即从服务启动活动而不需要5秒延迟 - Sam
显示剩余2条评论
3个回答

0
在您的第二种情况中,当您从A启动B时,B已经在运行。在这种情况下,因为您已经指定了Intent.FLAG_ACTIVIY_CLEAR_TOP,它将需要完成仍然活跃在B中的现有Activity,然后才能在B中实例化新的Activity。可能是您在B中的Activity(或Activities)的finish()onPause()onStop()onDestroy()代码导致了3秒的延迟。

-1

试一试吧..

new Handler().postDelayed(new Runnable() {
    @Override
    public void run() {
    Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage("com.ts.share");
    LaunchIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity( LaunchIntent );
    }
}, 0);

谢谢,但是没有改变!仍然有延迟。 - Son Nguyen Thanh

-1

你的主线程可能在做很多工作。另一种解决方案是在单独的处理程序上加载意图。

Handler handler = new Handler(Looper.getMainLooper());

handler.post(new Runnable() {
    @Override
    public void run() {
        Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage("com.ts.share");
            LaunchIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity( LaunchIntent );
    }
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接