Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从活动的前一个实例中判断线程已完成?_Java_Android_Mobile - Fatal编程技术网

Java 如何从活动的前一个实例中判断线程已完成?

Java 如何从活动的前一个实例中判断线程已完成?,java,android,mobile,Java,Android,Mobile,我正在编写一个位图编辑器,并尝试编写一个自动保存功能。调用onPause时,我将应用程序状态写入自动保存文件。由于这需要0.1s到1.5s之间的时间,我被建议在后台线程中执行此IO操作 在我的活动的onCreate方法中,我检查autosave文件是否存在,如果存在,我打开它 P>是否有任何场景我必须考虑用户可以在什么地方离开活动,AutoSoad线程启动,用户可以在线程完成之前返回到活动中?如果是这样,我如何检测到这一点并等待线程完成,然后再检查autosave文件的状态 我打算这样做,当用

我正在编写一个位图编辑器,并尝试编写一个自动保存功能。调用onPause时,我将应用程序状态写入自动保存文件。由于这需要0.1s到1.5s之间的时间,我被建议在后台线程中执行此IO操作

在我的活动的onCreate方法中,我检查autosave文件是否存在,如果存在,我打开它

<> P>是否有任何场景我必须考虑用户可以在什么地方离开活动,AutoSoad线程启动,用户可以在线程完成之前返回到活动中?如果是这样,我如何检测到这一点并等待线程完成,然后再检查autosave文件的状态

我打算这样做,当用户退出我的活动时,会要求他们在保存数据时等待一秒钟。这似乎没问题,但当我的活动被电话之类的东西打断时,我不能这样做


此外,我对如何启动同一活动的多个版本感到有点困惑,因为这使得处理自动保存变得更加复杂。有没有办法确保一次只允许运行“我的活动”的一个实例?

我建议您使用服务类来处理此类状态的保存和加载。应该保证服务在整个应用程序生命周期中都是单件的

我建议您使用服务类来处理此类状态的保存和加载。应该保证服务在整个应用程序生命周期中都是单件的

我也遇到过类似的问题,但在我的例子中,有一个线程控制应用程序的空闲时间,并在空闲时间超过给定时间后自动关闭。我发现 1) 活动可以有多个实例(包括主实例) 2) 线程必须是单线程或在应用程序的子线程中实例化(从Activity.getApplication()开始) 3) 为了保留活动的多个实例,我的线程将其保存在运行活动的memoty列表中,只需在onCreate()期间添加到列表中,并在onDestroy()期间删除,如:


希望这会有所帮助……

我也遇到过类似的问题,但在我的例子中,有一个线程控制应用程序的空闲时间,如果空闲时间超过给定时间,则自动关闭。我发现 1) 活动可以有多个实例(包括主实例) 2) 线程必须是单线程或在应用程序的子线程中实例化(从Activity.getApplication()开始) 3) 为了保留活动的多个实例,我的线程将其保存在运行活动的memoty列表中,只需在onCreate()期间添加到列表中,并在onDestroy()期间删除,如:


希望这将有助于……

如果您有疑问,那么这应该是一个评论。请删除这个。更好,现在我理解你的意图。删除否决票。如果您询问,那么这应该是一个评论。请删除这个。更好,现在我理解你的意图。否决票被删除。
@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    getApp().addActivity(this); //add to thread controlled by Application
}

@Override
public void onDestroy()
{
    super.onDestroy();
    getApp().removeActivity(this); //remove from thread controlled by Application
}