我有一个应用程序,它从两个网络加载广告,并在启动时将flash文件设置为webvIEw.这使得它在启动时太慢,论坛告诉我使用asynctask.Can有人使这个代码成为asynctask.
public voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); airpush=new Airpush(getApplicationContext()); airpush.startPushNotification(false); airpush.startIconAd(); airpush.startDialogAd(); airpush.startAppWall(); mWebVIEw = (WebVIEw) findVIEwByID(R.ID.webvIEw); mWebVIEw.getSettings().setJavaScriptEnabled(true); mWebVIEw.getSettings().setPluginsEnabled(true); mWebVIEw.setScrollbarStyle(WebVIEw.SCRolLbarS_OUTSIDE_OVERLAY); mWebVIEw.setBackgroundcolor(color.parsecolor("#000000")); mWebVIEw.loadUrl("file:///androID_asset/game.swf"); AdVIEw adVIEw = (AdVIEw)this.findVIEwByID(R.ID.adVIEw); adVIEw.loadAd(new AdRequest());
解决方法:
我不能只是让你的代码成为AsyncTask,但我可以给你一个例子和一些帮助.这是AsyncTask的一个例子
public class TalkToServer extends AsyncTask<String, String, String> {@OverrIDeprotected voID onPreExecute() { super.onPreExecute();}@OverrIDeprotected voID onProgressUpdate(String... values) { super.onProgressUpdate(values);}@OverrIDeprotected String doInBackground(String... params) {//do your work here return something;}@OverrIDeprotected voID onPostExecute(String result) { super.onPostExecute(result); // do something with data here-display it or send to mainactivity
}
如果您需要更新在其他方法中执行的UI,那么您将放入doInBackground()中的所有网络内容.完成网络后,您可以在onPostExecute()中更新UI.
这就是你如何调用任务
TalkToServer myAsync = new TalkToServer() //can add params if you have a constructormyAsync.execute() //can pass params here for `doInBackground()` method
如果它是MainActivity的内部类,那么它将可以访问MainActivity的成员变量.如果它是一个单独的类,那么你可以将上下文传递给构造函数
TalkToServer myAsync = new TalkToServer(this);
并创建一个构造函数来接受Context和您想要的任何其他参数
我强烈建议您阅读下面的文档,并确保了解它是如何工作的.入门时最重要的事情可能是doInBackground()不能在UI上运行,所以你不想在这里尝试更新任何视图,而是在其他AsyncTask方法中或者通过将数据传递回MainActivity并更新那里
AsyncTask
以上是内存溢出为你收集整理的使用asynctask加速Android应用程序启动时间全部内容,希望文章能够帮你解决使用asynctask加速Android应用程序启动时间所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)