Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android异步任务在后台加载资源并将其传递回主活动_Android_Android Asynctask - Fatal编程技术网

Android异步任务在后台加载资源并将其传递回主活动

Android异步任务在后台加载资源并将其传递回主活动,android,android-asynctask,Android,Android Asynctask,我是android新手,现在我需要asynctask的帮助,因为我无法摆脱它!我的应用程序中有一些资源需要2-3秒才能加载,因此我想用“请稍候”进行progressdialog,并用doinbackground在后台加载资源,然后将它们传递回主活动。我读过很多帖子,但我不可能找到解决方案 因此,我希望任何人都能帮助我,告诉我如何将数据传递回主要活动。提前谢谢 代码如下: 公共类菜单扩展活动{ MyTask-objMyTask; 上下文=这个; 线性排列顺序; 图像按钮启动器; 线性布局菜单、类

我是android新手,现在我需要asynctask的帮助,因为我无法摆脱它!我的应用程序中有一些资源需要2-3秒才能加载,因此我想用“请稍候”进行progressdialog,并用doinbackground在后台加载资源,然后将它们传递回主活动。我读过很多帖子,但我不可能找到解决方案

因此,我希望任何人都能帮助我,告诉我如何将数据传递回主要活动。提前谢谢

代码如下:

公共类菜单扩展活动{
MyTask-objMyTask;
上下文=这个;
线性排列顺序;
图像按钮启动器;
线性布局菜单、类别列表;
文本视图文本提示;
字符串[]项_图像;
字符串[]项目名称;
字符串[]项_shortdesc;
字符串[]项描述;
字符串[]项目价格;
int[]项目_类;
字符串[]菜单类别;
字符串符号=”;
ArrayList项按顺序排列=新建ArrayList();
TextView购买;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_菜单);
//强制画像
此.setRequestedOrientation(ActivityInfo.SCREEN\u ORIENTATION\u Graphic);
//从strings.xml加载数据
sign=getResources().getString(R.string.CurrencySign);
item_title=getResources().getStringArray(R.array.ItemTitle);
item_image=getResources().getStringArray(R.array.ItemImage);
item_desc=getResources().getStringArray(R.array.ItemDescription);
item_shortdesc=getResources().getStringArray(R.array.ItemShortDescription);
item_price=getResources().getStringArray(R.array.ItemPrice);
item_category=getResources().getIntArray(R.array.itemcegory);
MenuCategories=getResources().getStringArray(R.array.MenuCategories);
//加载资源
TextView菜单标题=(TextView)findViewById(R.id.menu标题);
TextView yourorder=(TextView)findViewById(R.id.yourorder);
TextView hinttext=(TextView)findViewById(R.id.hinttext);
TextView类别=(TextView)findViewById(R.id.categories);
menu=(LinearLayout)findViewById(R.id.menuscroll);
startorder=(图像按钮)findViewById(R.id.startorder);
order=(LinearLayout)findViewById(R.id.orderscroll);
texthint=(TextView)findViewById(R.id.hinttext);
类别列表=(线性布局)findViewById(R.id.categories\u列表);
我想在后台从strings.xml加载数据,比如item_title、item_image、item_desc、item_shortdesc、item_price、item_category、MenuCategories
我有异步任务的以下代码:
公共类MyTask扩展了AsyncTask{
私人对话;
@凌驾
受保护的void onPreExecute(){
dialog=新建进度对话框(菜单。此);
setMessage(“加载…”);
dialog.show();
}
@凌驾
受保护的字符串背景(字符串…传递){
{
试一试{
我不知道在这里输入什么??
}捕获(例外e){
Log.e(“图像”,“加载数据失败”,e);
}
返回null;
}    
}
@凌驾
受保护的void onPostExecute(字符串结果){
if(dialog.isShowing()){
dialog.dismise();
}
}
}	

资源是通过资源管理器加载的,与资产不同,应用程序对此过程几乎没有控制权。调用
getResources().getString()
不会加载
strings.xml
文件,因为它已经在后台加载(每个应用程序运行一次)。因此,将这些调用放在AsyncTask中没有意义


您可以在此处了解有关访问资源的更多信息:

如果您的应用程序无法快速加载字符串资源,则可能是因为您的数组太大而无法保存在资源中。我强烈建议您使用SQLite数据库来代替您的方法。这将解决您的速度问题,并且更易于维护,可以用作菜单增加。

加载一些字符串需要2-3秒?嗯……你确定吗?