如果不是“ but”,我就没有问题。
警报器:
我创建了一个带有小数位(TextView)的Android小部件时钟。使用AlarmManager(最小为60000毫秒)和PendingIntent更新小部件(刻度)。有效。
但是,分钟数与设备时钟中的分钟数不同步。秒,24小时秒。这样做的最大问题是,在主屏幕上滑动窗口小部件后,窗口小部件不会立即显示时间,而最多显示窗口小部件名称最多59秒。
PS:小部件时钟还有另一个备用时钟,每24小时每秒有一个刻度。这不是真正的问题,因为足以显示小时和分钟。
运行睡眠:
我对此感到困惑。我记得我,它在工作流程中有效,但是重做却无法正常工作。真烦人或者我记得错了。
对于Run-Sleep,同步性(分钟)是相同的问题。与秒相同。
CountDownTimer:
不要工作而且我不知道。而且我对此事知之甚少。
调查问题:
最好的方法是什么? (有效时)。在小部件上以最小的资源显示秒数的方法是什么? (电池,CPU)。
package com.widget.clock
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.SystemClock;
import android.widget.RemoteViews;
import android.os.CountDownTimer;
import java.lang.Runnable;
public class UpdateWidget extends AppWidgetProvider {
private PendingIntent pendingIntent;
// ###############
// THE ALARM START
// ###############
/*
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
final AlarmManager manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
final Intent i = new Intent(context, UpdateService.class);
// if (pendingIntent == null) {
pendingIntent = PendingIntent.getService(context, 0, i, PendingIntent.FLAG_CANCEL_CURRENT);
// }
manager.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime(), 60000, pendingIntent);
// Onclick open the Main APP Window
for (int appWidgetId : appWidgetIds) {
Intent intent = new Intent(context, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
views.setOnClickPendingIntent(R.id.widget_content, pendingIntent);
appWidgetManager.updateAppWidget(appWidgetId, views);
}
}
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
}
*/
// #############
// THE ALARM END
// #############
// ###################
// THE RUN-SLEEP START
// ###################
/*
@Override
public void onUpdate(final Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
super.onUpdate(context, appWidgetManager, appWidgetIds);
setContentView(R.layout.widget_layout);
Thread t = new Thread() {
@Override
public void run() {
try {
while (!isInterrupted()) {
Thread.sleep(100);
runOnUiThread(new Runnable() {
@Override
public void run() {
final Intent i = new Intent(context, UpdateService.class);
PendingIntent.getService(context, 0, i, PendingIntent.FLAG_CANCEL_CURRENT);
}
});
}
} catch (InterruptedException e) {
}
}
};
t.start();
private void setContentView(int widget_layout) {
}
private void runOnUiThread(Runnable runnable) {
}
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
}
*/
// #################
// THE RUN-SLEEP END
// #################
// ########################
// THE COUNTDOWNTIMER START
// ########################
@Override
public void onUpdate(final Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
super.onUpdate(context, appWidgetManager, appWidgetIds);
setContentView(R.layout.widget_layout);
CountDownTimer t = new CountDownTimer(60000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
final Intent i = new Intent(context, UpdateService.class);
PendingIntent.getService(context, 0, i, PendingIntent.FLAG_CANCEL_CURRENT);
}
@Override
public void onFinish() {
final Intent i = new Intent(context, UpdateService.class);
PendingIntent.getService(context, 0, i, PendingIntent.FLAG_CANCEL_CURRENT);
}
};
t.start();
}
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
}
// ######################
// THE COUNTDOWNTIMER END
// ######################
}
请谨慎对待您的点击,投票和评论。