亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何停止計時器/更改系統 UI OnSleep Xamarin Android

如何停止計時器/更改系統 UI OnSleep Xamarin Android

C#
開心每一天1111 2022-06-12 15:14:51
所以我有一個按下按鈕的應用程序:啟動一個計時器,循環瀏覽一個(++)數據并隱藏開始按鈕,而是顯示一個停止和下一步按鈕。我查看了消息中心,我認為它正在解決問題(這里是鏈接Xamarin.Forms 如何從另一個 CS 文件訪問公共函數?)但它并沒有完全解決問題。如果應用程序的計時器正在運行(也就是你點擊了開始按鈕),然后通過點擊手機上的主頁按鈕來中斷進程,則應用程序運行正常,應用程序隱藏停止/下一步按鈕并顯示開始按鈕并停止計時器。如果您根本沒有開始該過程(也就是您沒有點擊開始按鈕)并且您點擊了手機上的主頁按鈕,則應用程序會引發異常錯誤,因為我正在使用消息中心進行更改“不需要改變,因為它從未改變”。有沒有更好的方法來處理這種情況?我可以在消息中心的應用狀態下使用 if/else 語句嗎?我被困住了。應用程序.xaml.csprotected override void OnSleep()    {        // Handle when your app sleeps        Debug.WriteLine("~~~~~~~~~~~~~~OnSleep~~~~~~~~~~~~~");        MessagingCenter.Send<App>(this, "OnSleep");    }MainPage.xaml.csMessagingCenter.Subscribe<App>(this, "OnSleep", (sender) => {            //shows start button instead of stop button            StartGrid.IsVisible = true;            //hides stop button            StopNextGrid.IsVisible = false;            //stops timer            timer.Stop();            timer = null;            //stops sound            startSound.Stop();            stopSound.Play();        });
查看完整描述

1 回答

?
慕的地10843

TA貢獻1785條經驗 獲得超8個贊

只能看到部分代碼,您應該在執行該方法之前檢查您的計時器是否已初始化。


當不點擊開始按鈕時,需要檢查是否timer已初始化,以便進行下面的定時器操作。


如果不想知道定時器是否被初始化。你可以試試這個:


在你的通知處理方法中修改。如果你的定時器和按鈕的狀態沒有改變,你不需要在通知中做任何事情。這里我用 來timer作為判斷。


MessagingCenter.Subscribe<App>(this, "OnSleep", (sender) => {

//shows start button instead of stop button

if (null != timer)

{

    StartGrid.IsVisible = true;

    //hides stop button

    StopNextGrid.IsVisible = false;

    //stops timer

    timer.Stop();

    timer = null;

    //stops sound

    startSound.Stop();

    stopSound.Play();

}

});


查看完整回答
反對 回復 2022-06-12
  • 1 回答
  • 0 關注
  • 161 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號