如何在不调用其finish()
方法的情况下使活动进入后台并返回启动此活动的父活动?我尝试了很多,但我找不到解决方案。因此,如果你们能提供帮助,我将非常感激。
5 回答
如果 Activity 在与其父级不同的任务中运行,则以下操作将起作用。要实现这一点,请参阅http://developer.android.com/guide/topics/manifest/activity-element.html#lmode。
public void onBackPressed () {
moveTaskToBack (true);
}
当前任务将被隐藏,但其状态将保持不变,并且当它重新激活时,它会像您离开时一样显示。
如果您有要在后台缓存/存储/处理的数据,可以使用AsyncTask或Thread。
当您准备好缓存/过渡到父级时,您将在您的子级 Activity 方法之一中执行以下操作(假设您使用 startActivityForResult() 启动子级)
线程方法:
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
// PUT YOUR CACHING CODE HERE
}
});
t1.start();
setResult( whatever );
finish();
如果您需要从新线程返回任何内容,您也可以使用处理程序。
AsyncTask 方法:
new CacheDataTask().execute( data params );
set_result( whatever );
finish();
AsyncTask 适用于您需要在新线程中处理某些内容但能够与 UI 进程进行通信的情况。
简单地
protected void minimizeApp() { Intent startMain = new Intent(Intent.ACTION_MAIN); startMain.addCategory(Intent.CATEGORY_HOME); startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 开始活动(开始主);}
向后移动任务并不能确保您将保持任何状态,除非您通过响应Activity
生命周期事件手动执行此操作。
Activity
您应该通过Intent
using开始第二个startActivity()
,或者,如果您需要从第二个接收结果Activity
,请使用startActivityForResult()
。这允许您在用户完成Activity
并返回您的第一个Activity
.
启动Activity
并获得结果:http: //developer.android.com/reference/android/app/Activity.html#StartingActivities
尝试:
Intent toNextActivity = new Intent(CurrentActivity.this,
NextActivity.class);
CurrentActivity.startActivity(toNextActivity);
如果您使用这种方式,将调用 CurrentActivity 中的 onPause() 方法,并且如果您在 CurrentActivity 中有一个静态变量(如 MediaPlayer 对象),它将继续存在(或者如果正在播放,则播放)。
我在我的应用程序中使用它,但我找到了一种更好的方法来使用服务。
希望对你有帮助!