首页 文章

在开始活动之前加载活动成员

提问于
浏览
2

我有一个主要活动,有许多按钮 . 每个按钮都开始另一个活动 . 其中一项活动(称为MyPuzzlesActivitiy)有一个成员,必须从互联网服务器加载才能工作 . (该成员是从互联网上加载的谜题列表)该成员的正确位置是活动 . 即便如此,我想在用户实际按下启动活动的按钮之前加载它,以节省时间(等待来自互联网服务器的响应) .

我想过让这个成员保持静态并从主要活动开始,但对我来说似乎有点难看 . 有人有更好的想法来解决这个问题吗?

谢谢..

1 回答

  • 0

    你是对的,在这种情况下静态是丑陋的 .

    您可以将它存储在应用程序中:首先,您需要使用您设计的自定义类( class MyApplication extends Application )继承 Application ,然后在清单( application name="...package...MyApplication" )中声明它 .

    然后,您可以从任何活动中使用它来存储数据,并在需要时检索它 . 只要您的应用处于有效状态,您的数据就可用 . 因此,您可以从主活动中加载谜题列表,将其存储在应用程序中(只需在 MyApplication 中添加一个setter和getter作为您要存储的数据类型),然后从其他活动的 onCreate 中检索它 .

    public class MyApplication extends Application {
        private List<Puzzle> puzzles;
    
        public void setPuzzlesList(List<Puzzle> puzzles) {
            this.puzzles = puzzles;
        }
    
        public List<Puzzle> getPuzzlesList() {
            return puzzles;
        }
    }
    

    从您的主要活动:

    ((MyApplication) getApplication).setPuzzlesList(..load your list of puzzles from your service...);
    

    并在 MyPuzzlesActivity

    final List<Puzzle> puzzles = ((MyApplication) getApplication).getPuzzlesList();
    

相关问题