如何设置Intent额外持久性

时间:2015-02-23 14:59:29

标签: android android-intent

我有一个以Intent开头的Activity,其中包含一些意图的额外数据。在读取这些数据之后,我想将其他数据放入额外的数据包中,我还想确保它将被保存为持久性(即下次重新创建我的活动时)。

现在我做这样的事情:

public class MyActivity extends Activity {
    public void onCreate(Bundle b){
       super.onCreate(b);
       if (getIntent().getBooleanExtra("ANIMATION_RAN", false)){
           runAnimation();
       }
    }

    private boolean runAnimation(){
        ...
        getIntent.putExtra("ANIMATION_RAN", true);
    }
}

这似乎有效,但我不确定这是否是持久添加额外内容的正确方法。据我所知,intent.putExtra()intent.getExtras().put()之间存在特殊方法或主要区别,但我不记得哪一个是正确的,也无法从文档中找到更多细节。< / p>

我只想存储已经运行的某个动画,并且不应该再次运行第二次(即使不是活动娱乐)

更新: 我只想存储一个已经运行动画的布尔标志。我不想再次运行动画(即使不是活动娱乐)。所以不,我不能将其存储为共享首选项,数据库或文件,因为否则该标志将用于MyActivity的实例,而这不是我想要的。我无法使用onSaveInstanceState(),因为我必须确保动画不会在娱乐时运行。

2 个答案:

答案 0 :(得分:0)

当活动被系统杀死并重新创建时,您可以保存捆绑包 看看http://developer.android.com/training/basics/activity-lifecycle/recreating.html#SaveState

但是,如果您想在用户杀死并重新启动应用程序时存储它,则必须使用SharedPreferencefiles之类的内容。

我认为SharedPreference就是你想要的!

答案 1 :(得分:0)

Kevinrob是对的。我想我明白你要完成的事情。您想在意图中存储一堆数据并使其保持运行,对吗?

问题在于它会使设备陷入困境。以后存储数据应该使用共享首选项,而不是使用其他进程。

如果您正在寻找存储数据的便利性,请查看GSON,这是一个由谷歌制作的java的json库。您可以为它提供包含所有数据的类的实例,并将其转换为可以存储在SharedPreferences中的json字符串。字符串可以返回给Gson,它会将你的对象吐出来,所有变量都保留它们的值。

希望这会有所帮助。