Android通知意图使用旧上下文

时间:2013-10-15 06:29:17

标签: android android-intent android-asynctask notifications

我正在编写一个小图片上传器应用程序,它使用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文本消失,并被旧的替换。

例如:

  1. 启动应用,文字为:“占位符文字”。
  2. 开始上传,完成文本后:“url:www.website.de/img.png”。
  3. 点击通知:打开活动,再次显示文字:“占位符文字”。
  4. 我的想法:这是因为返回的意图是使用我更改UI之前设置的“旧”活动上下文。但我不知道如何解决这个问题。更新UI后,是否可以在“onPostExecute”-Method中设置resultIntent和TaskStackBuilder?

0 个答案:

没有答案