【问题标题】:android: how to restore an object, onResume, and save it onPause?android:如何恢复一个对象,onResume,onPause保存?
【发布时间】:2011-06-21 00:43:23
【问题描述】:

我想在暂停时保存一个对象(Myclass),并在应用程序恢复时加载它。

我尝试了一切,但没有任何效果。

我正在尝试创建一个线程并在问题出现时让它在我的主要活动上运行。 当我按下后退按钮(退出应用程序)并再次单击应用程序时,会创建一个新线程并且不会恢复旧线程。

【问题讨论】:

  • 我不确定您要做什么,您能否提供更多详细信息。另请查看 onSaveInstanceState() 和 onRestoreInstanceState() 可能是您正在寻找的内容。
  • mkso 在保存和恢复活动状态方面是正确的。但是,您不应该保存 Thread 本身:相反,您需要保存 Threadstate(例如,如果它正在做一些工作,您可能会保存什么“项目”它正在工作,或类似的东西),然后如果你在onCreate() 中得到一个非空的冰柱,则恢复该状态。如果您希望线程继续在后台工作,最好使用Service

标签: android multithreading object onresume onpause


【解决方案1】:

使类(MyClass)实现Serializable,然后可以在activity销毁时将其保存为文件,并在恢复时从文件中恢复

public boolean ObjectToFile(String fileName, Object obj){
    boolean success = false;        
    FileOutputStream fos = null;
    ObjectOutputStream out = null;
    try{
        File dir = GetAppDir();
        if(dir != null){
            fos = new FileOutputStream(dir + "/" + fileName);
            out = new ObjectOutputStream(fos);
            out.writeObject(obj);
            out.close();
            success = true;
        }
    }catch(Exception e){}
    return success;
}

public Object FileToObject(String fileName){
    Object obj = null;
    try{
        File dir = GetAppDir();
        if(dir != null){
            File f = new File(dir, fileName);
            if(f.exists() && f.isFile()){       
                FileInputStream fis = null;
                ObjectInputStream in = null;
                fis = new FileInputStream(f);
                in = new ObjectInputStream(fis);
                obj = in.readObject();
                in.close();
            }
        }
    }catch(Exception e){}
    return obj;
}

【讨论】:

  • mmmm 它对我不起作用,因为 myclass 它的运行线程。当我按下后退按钮时不会终止活动。
  • 请不要在 Android 上使用序列化,它非常慢。请改用 Parcelables。
【解决方案2】:

基本上你不能(也不应该)做你想做的事。如果您有想要在用户结束会话后继续执行的代码*,您的代码应该与服务关联运行。然后代码应该将其工作写入持久存储,或者您的服务应该允许新创建的活动的一些绑定接口与线程连接。

*如果用户支持我们的活动,则会话结束。这与用户按下 HOME 键的行为不同,后者表明用户希望在返回到您的应用程序时恢复他们正在执行的操作。

【讨论】:

    猜你喜欢
    • 2017-11-09
    • 1970-01-01
    • 1970-01-01
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多