从AsyncTask更新活动

mou*_*907 3 android android-asynctask android-activity

所以我是一个学习android的iOS开发人员,我很难理解一些事情.现在我有一个datamanager类.在该类中,它有一个AsyncTask来更新数据.OnPreExecute我弹出一个活动来显示它正在更新.我知道我可以使用额外的东西将初始信息传递给UpdateActivity.我的问题是我不确定如何在OnProgressUpdate中发送新信息.这是我的代码萎缩:

    private class myTask extends AsyncTask<Integer,String,Void>{

    @Override
    protected void onCancelled() {
        super.onCancelled();
        isUpdating = false;
    }

    @Override
    protected Void doInBackground(Integer... params) {
        //My BG Code
    }

    @Override
    protected void onPostExecute(Void result) {
        // TODO Remove updating view
        super.onPostExecute(result);
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        Intent myIntent = new Intent(mContext,UpdateActivity.class);
        mContext.startActivity(myIntent);
    }
}
Run Code Online (Sandbox Code Playgroud)

Squ*_*onk 6

AsyncTask旨在嵌套在Activity类中时效果最佳.

使AsyncTask"特殊"的原因在于它不仅仅是一个工作线程 - 而是它将处理代码的工作线程doInBackground(...)与在Activity的UI线程上运行的方法相结合- onProgressUpdate(...)并且onPostExecute(...)是最常用的.

通过定期调用updateProgress(...)from doInBackground(...),调用该onProgressUpdate(...)方法允许它操作Activity的UI元素(进度条,显示正在下载的文件名称的文本等).

简而言之,不是从AsyncTask触发"更新"活动,而是更新活动本身应该有一个嵌套的AsyncTask,它用于处理更新并将进度发布到UI.

  • @mouser:我为当前应用程序完成它的方式是我有一个'db helper'类,它扩展了SQLiteOpenHelper.我还扩展了Application类,它维护对db helper的单个实例的静态引用.这意味着所有活动等都可以使用MyApp.dbHelper访问帮助程序 (2认同)