如何使活动进入后台而不调用它 finish() 方法并返回到启动此活动的父活动?我尝试了很多但找不到解决方案。因此,如果你们能提供帮助,我将非常感激。

有帮助吗?

解决方案

如果该活动是在一个不同的任务给其父运行以下将起作用。要做到这一点,请参见 http://developer.android.com/导向/主题/清单/活性-element.html#LMODE

public void onBackPressed () {
    moveTaskToBack (true);
}

在当前任务将被隐藏,但它的状态将保持不变,而当它被重新激活它会出现,就像它是当你离开它。

其他提示

如果您想在后台缓存/存储/处理数据,您可以使用 异步任务 或一个 线.

当您准备好缓存/转换到父级时,您可以在子 Activity 方法之一中执行类似以下操作(假设您使用 startActivityForResult() 启动子级)

线程方法:

Thread t1 = new Thread(new Runnable() {

        @Override
        public void run() {
            // PUT YOUR CACHING CODE HERE

        }
});

t1.start();

setResult( whatever );
finish();

您还可以使用 处理程序 如果您需要从新线程返回任何信息。

异步任务方法:

new CacheDataTask().execute( data params );
set_result( whatever );
finish();

AsyncTask 适用于需要在新线程中处理某些内容,但又能够与 UI 进程进行通信的情况。

移动任务落后是不会保证你会保持任何状态,除非你手动做到这一点的响应Activity生命周期事件。

您应该使用Activity刚开始通过Intent第二startActivity(),或者,如果你需要从第二Activity,使用startActivityForResult()收到一个结果返回。这可以让你当用户完成Activity收到的回调,并返回到你的第一个Activity

启动一个Activity和获得的结果: http://developer.android的.com /参考/机器人/应用/ Activity.html#StartingActivities

尝试:

 Intent toNextActivity = new Intent(CurrentActivity.this,
                                     NextActivity.class);
 CurrentActivity.startActivity(toNextActivity);

如果你用这种方式,从CurrentActivity方法的onPause()将被调用,如果你在CurrentActivity有一个静态变量(如MediaPlayer对象),它会继续存在(或玩,如果是打)..

我用,在我的应用程序,但我发现了一个更好的办法来做到这一点与服务。

希望这会帮助你!

简单地

保护无效minimizeApp(){         意图startMain =新意图(Intent.ACTION_MAIN);         startMain.addCategory(Intent.CATEGORY_HOME);         startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);         startActivity(startMain);     }

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top