<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Android實現(xiàn)啟動展示廣告頁功能

          共 3891字,需瀏覽 8分鐘

           ·

          2021-05-14 02:12

          需求:在App應用退出后(此時App是在后臺運行的,并不是進程被殺死),每當用戶再次將該應用切換到前臺顯示時,總能向用戶展示3S的廣告頁。


          思路:

          1.在LaunchActivity中加載好廣告數(shù)據(jù),用戶首次進入應用時不展示廣告,而是將廣告數(shù)據(jù)存儲到數(shù)據(jù)庫,下次使用。


          2.用戶一直按back鍵,退到MainActivity時,不銷毀MainActivity,而是跳轉到LaunchActivity,在LaunchActivity中跳轉到Home界面(手機的菜單界面),此時我們的應用的棧中存在兩個Activity(LaunchActivity,MainActivity)重點是MainActivity的啟動模式設置為SingleTask。然后配合跳轉的業(yè)務邏輯就能實現(xiàn)每次進入應用播放廣告的需求


          簡單說下我的代碼實現(xiàn):


          BaseActivity的onKeyDown方法,MainActivity繼承BaseACtivity

           @Override    public boolean onKeyDown(int keyCode, KeyEvent event) {        if (keyCode == KeyEvent.KEYCODE_BACK &&                MyActivityManager.getMyActivityManager().getActSize() == 1 &&                MyActivityManager.getMyActivityManager().isActivityExist(MainActivity.class)) {            Intent intent = new Intent(this, SplashActivity.class);            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);            intent.putExtra("flag", 2);            startActivity(intent);            return true;        }        return super.onKeyDown(keyCode, event);    }


          LaunchActivity沒有繼承BaseActivity,LaunchActivity(我的叫SplashActivity)的代碼邏輯如下:


          1、onCreate方法

          //onCreate方法 @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        //將window的背景圖置空        getWindow().setBackgroundDrawable(null);        //是否全屏        getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);        setContentView(R.layout.activity_splash);        skipAd = findViewById(R.id.skipAd);        screenIV = findViewById(R.id.screenIV);        emptyViewParent = findViewById(R.id.emptyViewParent);        TextView emptyTv = findViewById(R.id.emptyTv);        emptyTv.setText("暫無網(wǎng)絡,請檢查網(wǎng)絡連接!");
          Intent intent = getIntent(); if (intent != null && intent.getIntExtra("flag", 0) == 2) { Intent home = new Intent(Intent.ACTION_MAIN); home.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); home.addCategory(Intent.CATEGORY_HOME); startActivity(home); } else { launchSplash(); } }


          2、onRestart方法,當用戶將應用切換到前臺時,會走LaunchActivity的onRestart方法

          @Override    protected void onRestart() {        super.onRestart();        launchSplash();    }


          3、launchAplash方法,申請權限,獲取廣告數(shù)據(jù)

          private void launchSplash() {        /**         * 由后臺接口控制,開屏頁是否顯示廣告         */        if (launchPresenter == null)            launchPresenter = new LaunchPresenter(this);        /**         * 檢查網(wǎng)絡         */        boolean hasNetwork = NetUtils.hasNetwork(this);        if (hasNetwork) {            getPermissions();        } else {            screenIV.setVisibility(View.GONE);            emptyViewParent.setVisibility(View.VISIBLE);        }    }


          4、getPermission方法申請權限,其中showLaunchImg獲取廣告數(shù)據(jù),并在回調中判斷數(shù)據(jù)庫中是否有廣告數(shù)據(jù),有則展示廣告,獲取新廣告更新廣告緩存,跳轉MainActivity;沒有則調用獲取廣告的接口獲取廣告,在回調中緩存廣告,跳轉MainActivity

           //獲取全部權限    @SuppressLint("CheckResult")    private void getPermissions() {        RxPermissions rxPermissions = new RxPermissions(this);        rxPermissions.requestEach(PermissionC.APP_PERMISSION)//                .observeOn(Schedulers.io())//                .subscribeOn(AndroidSchedulers.mainThread())                .subscribe(permission -> {                    if (permission.name.equals(Manifest.permission.ACCESS_COARSE_LOCATION)                            && permission.granted) {                        Location location = LocationMonitor.getInstance(SplashActivity.this,                                SplashActivity.this).getLocation();                        if (location != null)                            getCity(location);                       //獲取廣告數(shù)據(jù)                        showLaunchImg();                    }                });    }


          基本的邏輯就是這樣,是否顯示廣告,可以由后臺在接口中用字段進行控制。具體的可按照你的業(yè)務邏輯進行擴展實現(xiàn)!

          瀏覽 67
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  五月天婷婷精品视频 | 日本手机黄色视频 | A A A 免费毛片 | 久久三级影视 | 青青精品视频 |