我有一个显示计时器的应用程序小部件.定时器可以启动,停止或恢复.
在Android 8计时器上有时不打勾(50/50).一些用户在Android 7上抱怨这个问题,但我不能确定它是否是同一个问题.在安装了Android 6的Nexus 5上,一切运行良好.如果向下滚动列表视图(直到计时器不可见)并向上滚动 - 计时器开始计时.如果我再将一个Chronometer放在ListView上方并启动 - 那么天文台计时器就会很好
ActivitiesRemoteViewsFactory
public RemoteViews getViewAt(int position) {
...
RemoteViews remoteViews = new RemoteViews(mContext.getPackageName(), getItemLayoutId());
if (timeLog.getState() == TimeLog.TimeLogState.RUNNING) {
remoteViews.setChronometer(R.id.widget_timer,
SystemClock.elapsedRealtime() - (duration * 1000 + System.currentTimeMillis() - timeLog.getStartDate().getTime()), null, true);
} else {
long timerValue = SystemClock.elapsedRealtime() - duration * 1000;
remoteViews.setChronometer(R.id.widget_timer, timerValue, null, false);
}
return remoteViews;
Run Code Online (Sandbox Code Playgroud)
更新从AppWidgetProvider的onReceive方法发送
public void onReceive(Context context, Intent intent) {
AppWidgetManager widgetManager = AppWidgetManager.getInstance(ctx);
...
widgetManager.notifyAppWidgetViewDataChanged(appWidgetIds, R.id.widget_activities_list);
}
Run Code Online (Sandbox Code Playgroud)
TargetSDK是25
更新 此问题也在主应用程序中重现.listView有问题,因为它在RecyclerView中运行良好.添加了在https://github.com/zaplitny/WidgetIssue上 …