android async http 进度条,android – 从AsyncTaskLoader更新进度条?

您可以使用加载程序来执行此操作,但是您需要在活动上保留并更新WeakReference:

public class LoaderTestActivity extends FragmentActivity implements LoaderCallbacks {

private static final int MAX_COUNT = 100;

private ProgressBar progressBar;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_async_task_test);

progressBar = (ProgressBar) findViewById(R.id.progressBar1);

progressBar.setMax(MAX_COUNT);

AsyncTaskCounter.mActivity = new WeakReference(this);

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.activity_async_task_test, menu);

return true;

}

public void onStartButtonClick(View v) {

startWork();

}

void startWork() {

getSupportLoaderManager().initLoader(0, (Bundle) null, this);

}

static class AsyncTaskCounter extends AsyncTaskLoader {

static WeakReference mActivity;

AsyncTaskCounter(LoaderTestActivity activity) {

super(activity);

mActivity = new WeakReference(activity);

}

private static final int SLEEP_TIME = 200;

@Override

public Void loadInBackground() {

for (int i = 0; i < MAX_COUNT; i++) {

try {

Thread.sleep(SLEEP_TIME);

} catch (InterruptedException e) {

e.printStackTrace();

}

Log.d(getClass().getSimpleName(), "Progress value is " + i);

Log.d(getClass().getSimpleName(), "getActivity is " + getContext());

Log.d(getClass().getSimpleName(), "this is " + this);

final int progress = i;

if (mActivity.get() != null) {

mActivity.get().runOnUiThread(new Runnable() {

@Override

public void run() {

mActivity.get().progressBar.setProgress(progress);

}

});

}

}

return null;

}

}

@Override

public Loader onCreateLoader(int id, Bundle args) {

AsyncTaskLoader asyncTaskLoader = new AsyncTaskCounter(this);

asyncTaskLoader.forceLoad();

return asyncTaskLoader;

}

@Override

public void onLoadFinished(Loader arg0, Void arg1) {

}

@Override

public void onLoaderReset(Loader arg0) {

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值