0

一時停止時にオブジェクト (Myclass) を保存し、アプリケーションの再開時にロードしたいと考えています。

私はすべてを試しましたが、何もうまくいきません。

問題が発生したときに、スレッドを作成してメインのアクティビティで実行しようとしています。戻るボタン (アプリケーションを終了) を押してアプリケーションをもう一度クリックすると、新しいスレッドが作成され、古いスレッドは再開されません。

4

2 に答える 2

0

基本的に、やろうとしていることはできません (そしてすべきではありません)。ユーザーがセッションを終了した後も実行し続けたいコードがある場合*、コードはサービスと関連付けて実行する必要があります。次に、コードはその作業を永続ストレージに書き込む必要があります。または、サービスは、新しく作成されたアクティビティがスレッドに接続するためのバインディング インターフェイスを許可する必要があります。

*ユーザーがあなたのアクティビティを支持すると、セッションは終了します。これは、ユーザーが HOME キーを押すのとは異なる動作です。これは、ユーザーがアプリケーションに戻ったときに、行っていたことを再開したいことを示しています。

于 2011-06-25T01:29:44.357 に答える
0

クラス (MyClass) を実装するSerializableと、アクティビティが破棄されたときにファイルとして保存し、再開時にファイルから復元できます。

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;
}
于 2011-06-21T07:54:57.620 に答える