0

很多时候,在 Android 应用程序中,用户单击按钮/视图并启动新活动,新活动会在用户之前查看的内容之前弹出并加载数据。

如果用户在下一个活动开始之前单击按钮时开始加载数据(从网络或磁盘或两者),从用户的角度来看会有什么不同。然后将该数据返回到广播接收器中的新活动。

这与在活动的 oncreate 中启动流程进行比较。假设这些网络和 i/o 进程只需要几毫秒,如果方法是在新活动的 onCreate 中启动,或者在旧活动 onClick 中启动,对用户会有什么影响。

第一种方式,启动 I/O 并在 I/O 完成后更改视图

//first activity
public void onClick(View v){
     startActivity(new Intent(this, NewActivity.class);
}

//NewActivity.class
onCreate(Bundle mBundle){
   super.onCreate(mBundle);
setContentView(R.layout.mView);
mObject = networkCall();  //after network call, the view objects in this layout will reflect data from the network call

}

第二种方式,在第一个活动中启动 I/O

//first activity
public void onClick(View v){
     IntentService networkCall = new IntentService();
     //start network call

     startActivity(new Intent(this, NewActivity.class);
}

//second activity on create just sets the view and also broadcast receiver

我的猜测是,在活动弹出的瞬间,来自意图服务的数据可能变得可用。但与此同时,通过意图传递数据可能需要同样长的时间,从而使收益变得微不足道

洞察力赞赏

4

1 回答 1

1

根据我的经验,新活动的 onCreate() 几乎是在您调用 startActivity() 时立即调用的。新活动没有以正确的方式显示,因为它需要时间来呈现您的布局。

您可以使用 Log.d() 函数自己玩时间。类似 Log.d(TAG, "这发生在:" + System.currentTimeMillis()); 在代码中的不同点查看事情何时发生。在您的应用程序运行时观看 LogCat,您可以自行决定哪种方式更好。

于 2014-03-04T17:31:30.443 回答