我正在使用一个线程将图像设置为背景,在这个线程中我有一个对话框。对话框开始并且在设置壁纸时应该关闭。这是到目前为止的代码
setWallbtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
final ProgressDialog myPd_ring=ProgressDialog.show(SingleWall.this, "Setting wallpaper", "", true);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
WallpaperManager wallManager = WallpaperManager.getInstance(getApplicationContext());
try {
image = BitmapFactory.decodeStream(url.openConnection().getInputStream());
wallManager.setBitmap(image);
Toast.makeText(SingleWall.this, "Wallpaper Set Successfully!!", Toast.LENGTH_SHORT).show();
myPd_ring.dismiss();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Toast.makeText(SingleWall.this, "Setting WallPaper Failed!!", Toast.LENGTH_SHORT).show();
myPd_ring.dismiss();
}
}
}, 4000);
}
});
因此,单击按钮会启动线程,并在 4 秒内显示带有进度图标的对话框。但这是不正确的!设置背景的时间可能多于或少于 4 秒!因此,4000
应该以将图像设置为墙纸的时间为基础进行计算。是否可以?
附言。我不能使用 AsyncTask 因为我得到了很多NullPointerExceptions