Я использую поток, чтобы установить изображение в качестве фона, и в этой теме у меня есть диалог. Диалог начинается и должен быть закрыт, когда будут установлены обои. Это код до сих порCalculate time thread android
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
Wow nice it works хорошо спасибо !! –
@ End.Game Нет проблем! Рад, что он работает на вас! –
@ End.Game Я только что понял, что у меня был успех тоста в неправильном месте, был шанс на неудачу и успех Тост. Просто обновил ответ с небольшим исправлением. –