将 Activity 发送到后台但未完成
-
19-09-2019 - |
题
如何使活动进入后台而不调用它 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); }