簡體   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