繁体   English   中英

屏幕进入睡眠模式时,PendingIntent AlarmManager不触发

[英]PendingIntent AlarmManager does not fire when the screen goes into sleep mode

这X秒需要每隔X秒更新我视图中的内容,这取决于时间表的持续时间。 我正在使用AlarmManager安排此即将发生的操作并触发Broadcast ,然后运行再次更新视图的例程,该问题是当设备进入睡眠模式时,不会调用下垂操作。

编辑:

我有一个ViewPager ,每个ViewPager必须每x秒更新一个FragmentList <Object> mList ),这x秒取决于时间表的持续时间,并且每个Fragment都有自己的时间来更新此列表。

为此,每个Fragment都有我的类MyReceiverUpdate的实例,并动态记录接收者,因为Fragment是独立的,并且该事件不会影响其他事件。

我正在使用AlarmManager来计划与此( PendingIntent Broadcast )的将来动作,此广播将执行例程以更新我的对象列表,该问题是当设备进入睡眠模式时,不会执行该动作。

//注册我的未决操作的方法

public void updateView(long millis){

    final Intent intent = new Intent( ACTION_NAME_UPDATE_VIEW);
    pendingIntent = PendingIntent.getBroadcast( GuideBaseFragment.this.getActivity(), mId, intent, PendingIntent.FLAG_UPDATE_CURRENT );

    final AlarmManager alarmManager = ( AlarmManager ) getActivity().getSystemService( Context.ALARM_SERVICE );
    alarmManager.set( AlarmManager.RTC_WAKEUP, millis, pendingIntentCleanViewNow );
}

我的广播

public class MyReceiverUpdate extends BroadcastReceiver {

    @Override
    public void onReceive( final Context context, final Intent intent ) {

        //need update view

        //Edit
        new UpdateListAsyncTask().executeOnExecutor( AsyncTask.THREAD_POOL_EXECUTOR, ( Void ) null );
    }
}

有人有什么建议吗?

不解决问题,只解决我的问题,也不离开这里被记录为解决。

对于我正在实现的功能,在保持打开状态的同时保持屏幕打开是可以接受的,因此我遵循了文档的Android。

保持设备唤醒

就像下面的代码一样,我的广播是动态的,并且是我活动的内容

public class Activity1 extends Activity {

    public class MyReceiverUpdateSchedules extends WakefulBroadcastReceiver {

        private PowerManager.WakeLock wakeLock;

        public void acquire( final Context ctx ) {

            if ( this.wakeLock != null ) {
                this.wakeLock.release();
            }

            final PowerManager pm = ( PowerManager ) ctx.getSystemService( Context.POWER_SERVICE );
            this.wakeLock = pm.newWakeLock( PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE, "aqs_wake_lock" );
            this.wakeLock.acquire();
        }

        @Override
        public void onReceive( final Context context, final Intent intent ) {
            this.acquire( context );

            // code going here
        }
    }

    @Override
    protected void onCreate( final Bundle savedInstanceState ) {
        super.onCreate( savedInstanceState );

    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM