簡體   English   中英

當應用程序被殺死時,AlertDialog 不會出現在屏幕上

[英]The AlertDialog does not appear on the screen when the application is killed

打開wifi時警告用戶; 我想在屏幕上顯示一個彈出窗口。 我試圖通過廣播和服務來做到這一點。 但是,在應用程序被殺死后它不起作用。

我的服務代碼:

public class AlertService extends Service {

private static Context context;

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    final AlertDialog alertDialog = new AlertDialog.Builder(AlertService.this).create();
    alertDialog.setMessage("Nek Test");
    alertDialog.setTitle("Reminder");
    alertDialog.setButton("Got it", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();
        }
    });

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY);
    }else{
        alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
    }
    new CountDownTimer(1000, 1000) {

        public void onTick(long millisUntilFinished) {

        }
        public void onFinish() {
            alertDialog.show();
        }
    }.start();
    return flags;
}

主要活動:

private BroadcastReceiver wifiStateReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        int wifiStateExtra = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE,WifiManager.WIFI_STATE_UNKNOWN);

        switch (wifiStateExtra){
            case WifiManager.WIFI_STATE_ENABLED:
                this.context = context;
                startService(new Intent(context, AlertService.class));
            break;
            case  WifiManager.WIFI_STATE_DISABLED:
            break;
            }
        }
    };

不幸的是,如果應用程序在最近的 Android 設備上被殺死,您無法從后台啟動活動。

我可以建議你做接下來的事情:1.檢查你的服務是否在殺死應用程序后繼續運行。 如果沒有 - 您需要使其獨立於應用程序生命周期。 2. 你可以顯示一個 toast \ 全屏意圖來通知用戶

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM