Android 将活动发送到后台而不完成

Android 将活动发送到后台而不完成,android,android-activity,Android,Android Activity,如何使活动转到后台而不调用其finish()方法并返回到启动此操作的父活动?我试了这么多,但找不到解决办法。所以,如果你们能帮忙,我将非常感激。试试: Intent toNextActivity = new Intent(CurrentActivity.this, NextActivity.class); CurrentActivity.startActivity(toNextActivity); 如果使用这种方式,

如何使活动转到后台而不调用其
finish()
方法并返回到启动此操作的父活动?我试了这么多,但找不到解决办法。所以,如果你们能帮忙,我将非常感激。

试试:

 Intent toNextActivity = new Intent(CurrentActivity.this,
                                     NextActivity.class);
 CurrentActivity.startActivity(toNextActivity);
如果使用这种方式,将调用CurrentActivity中的onPause()方法,如果CurrentActivity中有一个静态变量(如MediaPlayer对象),它将继续存在(如果正在播放,则播放)

我正在我的应用程序中使用它,但我找到了一种更好的方法来使用服务


希望这对你有帮助

如果要在后台缓存/存储/处理数据,可以使用或

当您准备缓存/转换到父级时,您可以在一个子活动方法中执行以下操作(假设您使用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();
如果需要从新线程返回任何信息,也可以使用

异步任务方法:

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进程通信的情况。

如果活动在与其父线程不同的任务中运行,则以下操作将起作用。要实现此目的,请参阅


当前任务将被隐藏,但其状态将保持不变,当重新激活时,它将与您离开时一样出现。

将任务向后移动并不能确保您将保持任何状态,除非您通过响应
活动
生命周期事件手动执行此操作

您只需使用
startActivity()
,通过
Intent
启动第二个
活动,或者,如果需要从第二个
活动
接收结果,请使用
startActivityForResult()
。这允许您在用户完成
活动
并返回到第一个
活动
时接收回调

启动
活动
并获得结果:

简单

受保护的最小无效EAPP(){ Intent startMain=新意图(Intent.ACTION\u MAIN); startMain.addCategory(Intent.CATEGORY\u HOME); startMain.setFlags(意图、标志、活动、新任务); 星触觉(startMain);
}

您试图通过将活动发送到后台来实现什么?实际上,我有需要缓存的数据。父活动第一次动态加载数据,然后将其发送到子活动。子活动修改数据,修改后的数据应该在那里。但如果完成,以前的数据被发送到子活动我想要的是返回到启动此操作的父活动,而不是一些新活动使用转换到新活动的意图只会运行正常的生命周期活动,例如
onPause()
onStop()
。当一个新的活动开始加载和执行时,不会发生流程继续执行的情况。请参阅我的答案以获得解决方案。绝对不能保证活动的状态不会受到影响。很可能,该活动将被操作系统销毁。除非您响应生命周期事件并相应地保存/恢复状态,否则您的活动将不知道它是创建并向后移动的。Jonathan说得对,后台活动不能保证继续运行。但在正常情况下,它们不会被操作系统破坏,直到一段时间过去。如果销毁会给您带来问题,那么您必须像其他评论员所说的那样保存和恢复状态。因此onSaveInstanceState()将确保我的状态可以在以后恢复,对吗?您应该向该方法添加
@Override
,以避免错误和预期行为。谢谢,您救了我的命:)