android活动不可见,android – 当不可见时更新Activity的UI [另一个活动在前台]

当Activity不在前台时更新它是否可以.我不是在问它是否可以从后台线程完成.

考虑一下:

我有两个活动Activity-A和Activity-B.

我从Activity-A启动AsyncTask,然后转到Activity-B.一段时间后,AsyncTask结束,在onPostExecute()方法中,我尝试更新Activity-A中的图像.当Activity-B位于前台时,所有这一切都会发生.

以上场景是否合理,或者我必须等到Activity-A在前台更新其UI?

如果我可以在上面的场景中安全地更新UI,那么当Activity-A被终止或完成并且AsyncTask仍然完成并尝试更新UI时,我该怎么办? [假设我必须在更新UI之前检查isFinishing]

以上是我想要做的简化版本.我实际上有一个Custom ImageView,它从服务器加载图像并在请求完成后自行更新.所以我想知道如果视图在活动不在前台或已完成/销毁时自动更新,我必须担心什么情况.

编辑:

这是一个正在运行的示例.

public class MainActivity extends Activity implements OnClickListener {

ImageView mImageView;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

mImageView = (ImageView) findViewById(R.id.iv_image);

findViewById(R.id.btn_activity_2).setOnClickListener(this);

}

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.btn_activity_2:

new BackGroundTask().execute();

startActivity(new Intent(MainActivity.this, Activity2.class));

break;

}

}

private class BackGroundTask extends AsyncTask {

@Override

protected Void doInBackground(Void... params) {

try {

Thread.sleep(5000);

} catch (InterruptedException e) {

e.printStackTrace();

}

return null;

}

@Override

protected void onPostExecute(Void result) {

super.onPostExecute(result);

mImageView.setImageResource(R.drawable.ic_launcher);

}

}

}

布局只是一个带按钮和图像的LinearLayout.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值