Android 如何将图表从一个活动传递到另一个活动?
我使用MPAndroidChart库创建的图表使用来自web服务的数据填充,这需要一点时间。因此,在这一次,我希望显示一个Splashscreen,以便可以在后台进行网络呼叫,形成一个图表,然后将其传递到要显示的MainActivity。 为此,我希望将两个条形图和一个RadarChart对象从Splachscreen活动传递到Main活动Android 如何将图表从一个活动传递到另一个活动?,android,android-activity,android-studio,mpandroidchart,Android,Android Activity,Android Studio,Mpandroidchart,我使用MPAndroidChart库创建的图表使用来自web服务的数据填充,这需要一点时间。因此,在这一次,我希望显示一个Splashscreen,以便可以在后台进行网络呼叫,形成一个图表,然后将其传递到要显示的MainActivity。 为此,我希望将两个条形图和一个RadarChart对象从Splachscreen活动传递到Main活动 那么我如何才能做到这一点呢?传递数据而不是图形。您可以按如下方式传递数据: Intent i = new Intent(getApplicationCont
那么我如何才能做到这一点呢?传递数据而不是图形。您可以按如下方式传递数据:
Intent i = new Intent(getApplicationContext(), NewActivity.class);
i.putExtra("new_variable_name","value");
startActivity(i);
并通过以下方式获得新的活动:
Bundle extras = getIntent().getExtras();
if (extras != null) {
String value = extras.getString("new_variable_name");
}
根据您拥有的数据类型,您可能必须以可打包或可序列化的方式传递数据
然后,您可以使用您传递的数据绘制新活动的图表。在我看来,您的总体设计方法需要稍加改进 首先,我建议您避免使用splash活动来“包含”网络操作。从用户体验的角度来看,这可能很糟糕,因为从一次使用到下一次使用,启动屏幕的显示时间可能不确定。如果启动屏幕停留超过(比如)两秒钟,那么应用程序可能看起来没有响应。如果您坚持这样做,我建议启动屏幕至少包含动态状态信息,以告知用户发生了什么 接下来,确保在专用线程上执行网络操作,而不是在主UI线程上 对于
main活动
引用获取的数据,我建议您查看单例模式以将其保存在内存中。也就是说,要么使用专用的单例对象,要么将其保存在应用程序的子类中。这样,网络操作在该单例中设置数据,而main活动从单例中获取数据。或者,当您为main活动
创建Intent
时,包
可能包含一个字符串,该字符串充当获取数据的键。我之所以提出这种策略,是因为我假设可能涉及大量数据。另一方面,如果数据量很小,您可能可以将数据本身放入包中,或者作为字符串中的JSON或其他形式
请记住,如果应用程序转到后台,然后再恢复,则可能会出现这样的情况:活动堆栈已恢复,但应用程序的所有“全局”状态都已消失。这意味着您的main活动将被恢复,但您希望位于singleton类中的数据不再存在。您的main活动
应该有办法解决这个问题,也许可以启动一个新的网络请求