嗨,谢谢你的帮助。
我有以下情况。
我有一个锁屏小部件,当用户点击它时,App Widget会执行一些任务(自行更新)。
重点是:如果手机处于睡眠模式并且用户点击App Widget,App Widget会自行更新,但App Widget本身不可见。
因此,当用户点击锁定屏幕小工具时,我需要唤醒设备 - 然后再次进入睡眠状态:-) -
因此我可以使用:
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK|PowerManager.ACQUIRE_CAUSES_WAKEUP, "bbbb");
wl.acquire();
在AppWidgetProvider中。 关键是:如何调用“release()”以便设备可以重新进入睡眠状态?
如果我这样做:
PowerManager pm = (PowerManager) ctxt.getSystemService(Context.POWER_SERVICE);
WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK|PowerManager.ACQUIRE_CAUSES_WAKEUP, "bbbb");
wl.acquire();
wl.release();
在AppWidgetProvider中,设备永远不会醒来。
任何建议都超过欢迎!
谢谢!
答案 0 :(得分:0)
好吧,我使用了一个处理程序来调用
wl.release()
60秒后:
public class AppWidget extends AppWidgetProvider {
@Override
public void onUpdate(Context ctxt, AppWidgetManager mgr, int[] appWidgetIds) {
ComponentName thisWidget = new ComponentName(ctxt, AppWidget.class);
int[] allWidgetIds = mgr.getAppWidgetIds(thisWidget);
Intent i = new Intent(ctxt, UpdateService.class);
i.putExtra("widgetsids", allWidgetIds);
ctxt.startService(i);
PowerManager pm = (PowerManager) ctxt
.getSystemService(Context.POWER_SERVICE);
final WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK
| PowerManager.ACQUIRE_CAUSES_WAKEUP, "bbbb");
wl.acquire();
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
wl.release();
}
}, 60000);
}