首次登录后2分钟我的应用程序显示空白屏幕

时间:2019-02-12 05:40:54

标签: android

在我的应用程序中,当用户首次登录时,需要2分钟才能显示主屏幕。此时,屏幕显示为空白,并且可以与oreo版本一起正常使用。和应用程序也可以在模拟器上正常运行。但是当我使用移动设备进行测试时,它显示为空白。请帮助我解决它。

public class HomeActivity extends BaseActivity implements NavigationView.OnNavigationItemSelectedListener, TabLayout.OnTabSelectedListener {

    public static MyAppDataBase myAppDataBase;
    ViewPager mViewPager;
    SectionsPagerAdapter mSectionsPagerAdapter;
    DrawerLayout drawer;
    NavigationView navigationView;
    ImageView nav_header_profile;
    int job_rows_count, policy_row_count;
    ImageView img_view_gov_jobs, img_view_my_servant, img_view_gov_policies;
    TextView nav_hedaer_user_name, nav_header_mobile;
    FloatingActionButton floatingActionButton;
    int PERMISSIONS_REQUEST_READ_CONTACTS = 100;
    DatabaseReference contactsRef;
    UserInfoTable infoTable;
    InternetConnection internetConnection;
    ContentObserver observer;
    String lastTimeStamp;
    String previous_timestamp;
    List<String> no_of_contacts;
    int contactscount;
    static UserDetailsAsycTask userDetailsAsycTask;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        /*getWindow().setEnterTransition(null);
        getWindow().setExitTransition(null);
        getWindow().setAllowEnterTransitionOverlap(false);
        getWindow().setAllowReturnTransitionOverlap(false);*/
        setContentView(R.layout.activity_home);

        PreferenceUtils.init(HomeActivity.this);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setTitle("Bharat Next");
        floatingActionButton = (FloatingActionButton) findViewById(R.id.fab);
        toolbar.setTitleTextColor(getResources().getColor(R.color.white));
        myAppDataBase = Room.databaseBuilder(HomeActivity.this, MyAppDataBase.class, "userdb")
                .addMigrations(MIGRATION_1_2)
                .allowMainThreadQueries()
                .build();

        internetConnection = new InternetConnection(HomeActivity.this);
        contactsRef = FirebaseDatabase.getInstance().getReference().child("Contacts");
        img_view_gov_jobs = findViewById(R.id.image_view_gov_jobs_for_you);
        img_view_my_servant = findViewById(R.id.image_view_my_servant);
        img_view_gov_policies = findViewById(R.id.image_view_gov_policies_for_you);
        navigationView = (NavigationView) findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);
        navigationView.getMenu().getItem(0).setChecked(true);
        View header = navigationView.getHeaderView(0);

        nav_header_profile = header.findViewById(R.id.nav_header_profile);
        nav_hedaer_user_name = header.findViewById(R.id.nav_header_user_name);
        nav_header_mobile = header.findViewById(R.id.nav_header_mobile_num);
       // userDetailsAsycTask=new UserDetailsAsycTask(HomeActivity.this);

       // get();
       // infoTable=myAppDataBase.myDao().getUsers();
        infoTable=myAppDataBase.myDao().getUsers();
        String name = infoTable.getName();
        String mobile = infoTable.getMobile_num();
        nav_hedaer_user_name.setText(name);
        nav_header_mobile.setText(mobile);
        TabLayout tabLayout = (TabLayout) findViewById(R.id.tabLayout);
        mViewPager = (ViewPager) findViewById(R.id.pager);

    //    initializeContactUpdatesReceiver();

       // getContactTimeStamp(HomeActivity.this);

        if (PreferenceUtils.GetLogin()) {
            InitializeSession();
        }

       /* mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());

        // Set up the ViewPager with the sections adapter.

        mViewPager.setAdapter(mSectionsPagerAdapter);*/
        setupViewPager(mViewPager);

        // Set up the tabs for ViewPager

        tabLayout.setupWithViewPager(mViewPager);

        tabLayout.setOnTabSelectedListener(HomeActivity.this);


        drawer = findViewById(R.id.drawer_layout);

        img_view_gov_jobs.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                //govJobs();
                if (internetConnection.checkConnection()) {
                    govJobs();
                } else {
                    Toast.makeText(HomeActivity.this, "No internet connection", Toast.LENGTH_LONG).show();
                }
            }
        });

        img_view_gov_policies.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (internetConnection.checkConnection()) {
                    govPolicies();
                } else {
                    Toast.makeText(HomeActivity.this, "No internet connection", Toast.LENGTH_LONG).show();
                }

            }
        });

        img_view_my_servant.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(HomeActivity.this, WorkForActivity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
               // Toast.makeText(HomeActivity.this, "Coming soon", Toast.LENGTH_LONG).show();
            }
        });

        nav_header_profile.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(HomeActivity.this, UserProfile.class));
            }
        });

        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        toggle.getDrawerArrowDrawable().setColor(getResources().getColor(R.color.white));
        drawer.setDrawerListener(toggle);
        toggle.syncState();
        // DialogManager.showProgress(HomeActivity.this);
        /*contactsRef.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                 if(dataSnapshot.hasChild(infoTable.getMobile_num())){
                   //  DialogManager.hideProgress();
                    contactsRef.child(infoTable.getMobile_num()).removeValue();
                   // DialogManager.hideProgress();
                    CheckContactsFragment();
                }


            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
                Log.d("test","the error is "+databaseError);
            }
        });


*/


        floatingActionButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                DialogManager.showProgress(HomeActivity.this);
                // contactsRef.child(infoTable.getMobile_num()).removeValue();
                // CheckContactsFragment();
                contactsRef.addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                        if (!dataSnapshot.hasChild(infoTable.getMobile_num())) {
                            DialogManager.hideProgress();
                            CheckContactsFragment();
                        } else if (dataSnapshot.hasChild(infoTable.getMobile_num())) {
                            contactsRef.child(infoTable.getMobile_num()).removeValue();
                            DialogManager.hideProgress();
                            CheckContactsFragment();
                        }


                    }

                    @Override
                    public void onCancelled(@NonNull DatabaseError databaseError) {
                        Log.d("test", "the error is " + databaseError);
                    }
                });
            }
        });

                    floatingActionButton.setVisibility(View.VISIBLE);

                    }


            }
        });
    }

    private void CheckContactsFragment() {
        Fragment fragment = getSupportFragmentManager().findFragmentByTag("android:switcher:" + R.id.pager + ":" + mViewPager.getCurrentItem());
        // based on the current position you can then cast the page to the correct Fragment class and call some method inside that fragment to reload the data:
        if (1 == mViewPager.getCurrentItem() && null != fragment) {
            ((ContactsFragment) fragment).getContactList(HomeActivity.this);
        }
    }

    private void InitializeSession() {
     //   DialogManager.showProgress(HomeActivity.this);
        ApiService apiService = ApiClient.getClient().create(ApiService.class);
        Call<SessionResponse> call = apiService.checkToken("Bearer " + PreferenceUtils.GetToken());
        call.enqueue(new Callback<SessionResponse>() {
            @Override
            public void onResponse(Call<SessionResponse> call, Response<SessionResponse> response) {
             //   DialogManager.hideProgress();
                if (response.isSuccessful()) {
                    if (response.body().getCode() == 201) {
                        ShowAlert(HomeActivity.this);
                    } else if (response.body().getCode() == 200) {
                        Toast.makeText(HomeActivity.this, response.body().getMesg(), Toast.LENGTH_SHORT).show();
                    } else if (response.body().getCode() == 205) {
                        ShowAlert(HomeActivity.this);
                    }
                }
            }

            @Override
            public void onFailure(Call<SessionResponse> call, Throwable t) {
              //  DialogManager.hideProgress();
                onError(t);
            }
        });
    }

    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {

        menuItem.setChecked(true);
        // close drawer when item is tapped
        switch (menuItem.getItemId()) {

            case R.id.nav_item_jobs:
                if (internetConnection.checkConnection()) {
                    govJobs();
                } else {
                    Toast.makeText(HomeActivity.this, "No internet connection", Toast.LENGTH_LONG).show();
                }
                break;
            case R.id.nav_item_policies:
                if (internetConnection.checkConnection()) {
                    govPolicies();
                } else {
                    Toast.makeText(HomeActivity.this, "No internet connection", Toast.LENGTH_LONG).show();
                }
                break;
            case R.id.nav_item_my_servant:
               // showAlertForm();
              //  Toast.makeText(HomeActivity.this, "Coming soon", Toast.LENGTH_LONG).show();
                startActivity(new Intent(HomeActivity.this, WorkForActivity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
                break;

            case R.id.nav_item_about_us:
               // Toast.makeText(HomeActivity.this, "Coming soon", Toast.LENGTH_LONG).show();
               startActivity(new Intent(HomeActivity.this, AboutUs.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
                break;
           /* case R.id.nav_item_my_logout:
                PreferenceUtils.SaveLogin(false);
                PreferenceUtils.saveUserId("");
                PreferenceUtils.savePassword("");
                DeletedData();
                startActivity(new Intent(HomeActivity.this, LoginActivity.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK));
                break;*/
        }
        drawer.closeDrawers();
        return true;
    }



    public void DeletedData() {
        PreferenceUtils.deleteData();
        myAppDataBase.myDao().deleteUsers();
        myAppDataBase.myDao().deleteUserJobDetails();
        myAppDataBase.myDao().deleteUserPolicyDetails();
    }

    private void govJobs() {
        job_rows_count = myAppDataBase.myDao().getNumberOfJobRows();
        if (job_rows_count >= 1) {
           // getWindow().setExitTransition(null);
            Intent intent = new Intent(HomeActivity.this, JobsList.class);
           // intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(intent);
            overridePendingTransition(0,0);
        } else {
           // startActivity(new Intent(HomeActivity.this, JobUserForm.class));
            Intent intent =new Intent(HomeActivity.this, JobUserForm.class);
          //  intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(intent);
            overridePendingTransition(0,0);
        }
    }

    private void govPolicies() {

        policy_row_count = myAppDataBase.myDao().getNumberOfPolicyRows();

        if (policy_row_count >= 1) {
            Intent intent = new Intent(HomeActivity.this, PoliciesGrid.class);
          //  intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(intent);
            overridePendingTransition(0,0);
        } else {
            //startActivity(new Intent(HomeActivity.this, PolicyUserForm.class));
            Intent intent = new Intent(HomeActivity.this, PolicyUserForm.class);
           // intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(intent);
            overridePendingTransition(0,0);
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.toolbar_menu, menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {

           /* case R.id.action_sign_out:
                PreferenceUtils.SaveLogin(false);
                DeletedData();
                PreferenceUtils.saveUserId("");
                PreferenceUtils.savePassword("");
                startActivity(new Intent(HomeActivity.this, LoginActivity.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK));
                break;*/
            case R.id.action_contact_us:
                startActivity(new Intent(HomeActivity.this, AboutUs.class));
              /*  Intent intent = new Intent(Intent.ACTION_SEND);
              //  intent.setType("text/plain");
                intent.setType("message/rfc822");
                intent.putExtra(Intent.EXTRA_EMAIL  , new String[]{"recipient@example.com"});
                intent.putExtra(Intent.EXTRA_EMAIL, "bharatnext3444@gmail.com");
                intent.putExtra(Intent.EXTRA_SUBJECT, "");
                intent.putExtra(Intent.EXTRA_TEXT, "");
                intent.putExtra(Intent.EXTRA_EMAIL, "bharatnext3444@gmail.com");
                startActivity(Intent.createChooser(intent, "Send Email"));*/
                break;

        }
        return super.onOptionsItemSelected(item);
    }

    @Override
    public void onTabSelected(TabLayout.Tab tab) {
        mViewPager.setCurrentItem(tab.getPosition());
    }

    @Override
    public void onTabUnselected(TabLayout.Tab tab) {

    }

    @Override
    public void onTabReselected(TabLayout.Tab tab) {

    }

   /* @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions,
                                           int[] grantResults) {
        if (requestCode == PERMISSIONS_REQUEST_READ_CONTACTS) {
            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                // Permission is granted
                contactsRef = FirebaseDatabase.getInstance().getReference().child("Contacts").child(infoTable.getMobile_num());

                contactsRef.addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                        if(!(dataSnapshot.exists()&&dataSnapshot.hasChildren())){
                            CheckContactsFragment();
                        }


                    }

                    @Override
                    public void onCancelled(@NonNull DatabaseError databaseError) {

                    }
                });


            } else {
                Toast.makeText(this, "Until you grant the permission, we cannot show contacts of your friends", Toast.LENGTH_SHORT).show();
            }
        }
    }*/

    class ViewPagerAdapter extends FragmentPagerAdapter {
        private final List<Fragment> mFragmentList = new ArrayList<>();
        private final List<String> mFragmentTitleList = new ArrayList<>();

        public ViewPagerAdapter(FragmentManager manager) {
            super(manager);
        }

        @Override
        public Fragment getItem(int position) {
            return mFragmentList.get(position);
        }

        @Override
        public int getCount() {
            return mFragmentList.size();
        }

        public void addFragment(Fragment fragment, String title) {
            mFragmentList.add(fragment);
            mFragmentTitleList.add(title);
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return mFragmentTitleList.get(position);
        }
    }

   /* @Override
    public void onResume(){
        super.onResume();
        getContactTimeStamp(HomeActivity.this);
        // put your code here...

    }*/
}

1 个答案:

答案 0 :(得分:0)

您尝试过使用其他真实设备吗?是一样的问题吗? 当VM堆不足时,会发生这种类型的错误,在这种情况下,您应该将ADB仿真器堆增加到所需的最小数量。

进入您的AVD管理器:

  • 在模拟器上单击“编辑”
  • 底部的“显示高级设置”
  • 转到:“内存和存储”
  • 将VM堆的值编辑为512 MB
  • 完成

enter image description here