我正在编写一个小图片上传器应用程序,它使用AsyncTask上传和通知,让用户知道上传是否完成。
上传完成后,我想使用我的AsyncTask-Thread中的“onPostExecute”-Method更新UI。如果您点击通知,它应该将用户导航到主活动,您可以在其中查看所有上传的图片(也是最新的图片)。
为此,我正在“onPreExecute”-Method中创建通知,意图回来:
@Override
protected void onPreExecute() {
mNotifyManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mBuilder = new NotificationCompat.Builder(context)
.setContentTitle("ImageUpload")
.setContentText("Uploading in progress")
.setSmallIcon(R.drawable.ic_launcher);
mBuilder.setProgress(0, 0, true);
mBuilder.setAutoCancel(true);
Intent resultIntent = new Intent(context, MainActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendingIntent =
stackBuilder.getPendingIntent(
0,
PendingIntent.FLAG_UPDATE_CURRENT
);
mBuilder.setContentIntent(resultPendingIntent);
mNotifyManager.notify(NOTIFICATION_ID, mBuilder.build());
}
当我创建AsyncTask对象时传递使用的上下文:
new ImageUploader(getApplicationContext())。execute((getRealPathFromURI()));
上传完成后,我正在更改通知文本并更新用户界面(目前只有一个TextView进行测试):
@Override
protected void onPostExecute(String result) {
if(result == null) {
setNotificationFinshedText("A error occured during the Upload");
} else {
setNotificationFinshedText("Upload complete!");
txt.setText(result);
}
}
工作正常,在“onPostExecute”-Method完成后,我的活动中有更新的文本和“上传完成!” - 栏中的通知。
现在我的问题开始了:如果我现在点击,我的通知会打开应用程序但使用旧的上下文文本/ UI。这意味着我更新的UI文本消失,并被旧的替换。
例如:
我的想法:这是因为返回的意图是使用我更改UI之前设置的“旧”活动上下文。但我不知道如何解决这个问题。更新UI后,是否可以在“onPostExecute”-Method中设置resultIntent和TaskStackBuilder?