如何刷新通知栏中的进度条?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (27)

我想在通知栏中放置一个进度条。这个想法显示了程序将文件上传到服务器时的进度条。其他一切都可以,但我无法弄清楚如何刷新通知中的进度条。有人知道任何模式可以玩吗?我的意思是,我应该在哪里刷新进度条,在服务或活动等等。

提问于
用户回答回答于

我不知道你的代码是什么样的,所以我不知道你需要修改什么,但是我通过文档搜索了一些东西。我在NotificationsProgressBarsRemoteViews上找到了一些东西。

特别是,在RemoveView中,你可以更新进度栏。因此,结合每个链接中的一些示例代码,我会得到如下所示的内容:

public class MyActivity extends Activity {
    private static final int PROGRESS = 0x1;
    private static final int MAX_PROGRESS = 100;

    private int mProgressStatus = 0;

    private Handler mHandler = new Handler();

    protected void onCreate(Bundle icicle) {
        super.onCreate(icicle);

        //define Notification
        //...

        RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.custom_notification_layout);
        contentView.setProgressBar(R.id.progress_bar, MAX_PROGRESS, mProgressStatus, false);
        notification.contentView = contentView;

        // Start file upload in a background thread
        new Thread(new Runnable() {
            public void run() {
                while (mProgressStatus < MAX_PROGRESS) {
                    mProgressStatus = doWork();

                    // Update the progress bar
                    mHandler.post(new Runnable() {
                        public void run() {
                            contentView.setProgressBar(R.id.progress_bar, MAX_PROGRESS, mProgressStatus, false);
                        }
                    });
                }
            }
        }).start();
    }
}

扫码关注云+社区