Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 原因是什么;“主线程上的工作太多”;警告_Java_Android_Android Fragments - Fatal编程技术网

Java 原因是什么;“主线程上的工作太多”;警告

Java 原因是什么;“主线程上的工作太多”;警告,java,android,android-fragments,Java,Android,Android Fragments,我知道有类似的标题问题,但我的略有不同 我有一个包含一个活动和多个片段的应用程序。启动应用程序时,它会检查用户是否已登录。如果是,则启动主页片段。出于这个问题的目的,我只会弹出一条Toast消息,上面说登录,而不是启动任何片段。该活动还包含一个抽屉布局、其相应的重写方法以及来自其他片段的许多接口方法,这些片段告诉主活动要做什么 我没有检索任何繁重的数据或进行任何URL连接,但出于某种原因,我一直收到“跳过帧/主线程上的工作太多”警告 我主要熟悉在需要检索JSON文件、连接数据库等时使用ASync

我知道有类似的标题问题,但我的略有不同

我有一个包含一个活动和多个片段的应用程序。启动应用程序时,它会检查用户是否已登录。如果是,则启动主页片段。出于这个问题的目的,我只会弹出一条Toast消息,上面说登录,而不是启动任何片段。该活动还包含一个抽屉布局、其相应的重写方法以及来自其他片段的许多接口方法,这些片段告诉主活动要做什么

我没有检索任何繁重的数据或进行任何URL连接,但出于某种原因,我一直收到“跳过帧/主线程上的工作太多”警告

我主要熟悉在需要检索JSON文件、连接数据库等时使用ASyncTask。在这种情况下,我不知道如何解决我的问题。在主活动中有很多代码。我只是不确定在一个单独的线程中放置什么最有意义,我应该如何做?如有任何建议,将不胜感激

以下是我的主要活动:

public class HomePage extends AppCompatActivity implements HomeFragment.OnClickedListener, CalendarFragment.OnClickedCalListener {
private FragmentTransaction ft;
private Fragment fragment;
private DrawerLayout drawerLayout;
private ListView drawerList;
private ActionBarDrawerToggle drawerToggle;
String[] drawerListItems;
private static final String PREFS_LOGGED_IN = "AreYouLoggedInFile";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home_page);

    String appVersion = "v1";
    Backendless.initApp(this, "blah blah", "blah", appVersion);

    if (findViewById(R.id.fragment_container) != null) {
        if (savedInstanceState != null) {

        }else{
            Toast.makeText(getApplicationContext, "Logged In", Toast.LENGTH).show();
        }
    }

    Toolbar myToolbar = (Toolbar) findViewById(R.id.toolBarHome);
    drawerLayout = (DrawerLayout)findViewById(R.id.homePageDrawer);
    drawerList = (ListView)findViewById(R.id.homePageList);
    drawerListItems = getResources().getStringArray(R.array.activities);
    drawerList.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,drawerListItems));
    drawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            switch (position) {
                case 0: {
                    fragment = new CalendarFragment();
                    break;
                }
                case 1: {
                    fragment = new ContactsFragments();
                    break;
                }
                case 2: {
                    fragment = new HomeFragment();
                    break;
                }
                case 3:{
                    fragment = new ActivityFragment();
                    break;
                }
                case 4:{
                    Toast.makeText(getApplicationContext(), "Logged Out!", Toast.LENGTH_LONG).show();
                    Intent i = new Intent(HomePage.this, MainLoginActivity.class);
                    SharedPreferences myPrefs = getSharedPreferences(PREFS_LOGGED_IN, 0);
                    SharedPreferences.Editor editor = myPrefs.edit();
                    editor.putBoolean("isLoggedIn", false);
                    editor.commit();
                    startActivity(i);
                    finish();
                    break;
                }
            }
            ft = getFragmentManager().beginTransaction();
            ft.replace(R.id.fragment_container,fragment);
            ft.addToBackStack(null);
            ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
            ft.commit();
            drawerLayout.closeDrawer(drawerList);
        }
    });
    drawerToggle = new ActionBarDrawerToggle(this,drawerLayout,myToolbar,R.string.drawer_open,R.string.drawer_close)
    {
        @Override
        public void onDrawerOpened(View drawerView) {
            super.onDrawerOpened(drawerView);
            invalidateOptionsMenu();
            syncState();
        }

        @Override
        public void onDrawerClosed(View drawerView) {
            super.onDrawerClosed(drawerView);
            invalidateOptionsMenu();
            syncState();
        }
    };
    drawerLayout.setDrawerListener(drawerToggle);
    setSupportActionBar(myToolbar);
    myToolbar.setLogo(R.drawable.happy_dog_icon);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setHomeButtonEnabled(true);
    drawerToggle.syncState();
}


@Override
protected void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    drawerToggle.syncState();
}

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    drawerToggle.onConfigurationChanged(newConfig);
}

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

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()){
        case android.R.id.home:{
            if (drawerLayout.isDrawerOpen(drawerList)){
                drawerLayout.closeDrawer(drawerList);
            }else{
                drawerLayout.openDrawer(drawerList);
            }
            return true;
        }case R.id.infoActionBar:{
            Toast.makeText(getApplicationContext(), "Hey", Toast.LENGTH_LONG).show();
        }
        default:return super.onOptionsItemSelected(item);
    }
}

@Override
public void onBackPressed() {
    if (getFragmentManager().getBackStackEntryCount() > 0 ){
        getFragmentManager().popBackStack();
    } else {
        super.onBackPressed();
    }
}

@Override
public void buttonClicked(View v) {
    switch (v.getId()){
        case R.id.logoutButton:{
            Backendless.UserService.logout(new AsyncCallback<Void>() {
                public void handleResponse(Void response) {
                    Toast.makeText(getApplicationContext(), "Logged Out!", Toast.LENGTH_LONG).show();
                    Intent i = new Intent(HomePage.this, MainLoginActivity.class);
                    SharedPreferences myPrefs = getSharedPreferences(PREFS_LOGGED_IN, 0);
                    SharedPreferences.Editor editor = myPrefs.edit();
                    editor.putBoolean("isLoggedIn", false);
                    editor.commit();
                    startActivity(i);
                    finish();
                }

                public void handleFault(BackendlessFault fault) {
                    Toast.makeText(getApplicationContext(), "Did Not Log Out!", Toast.LENGTH_LONG).show();
                }
            });
        }
        case R.id.calendarButton:{
            fragment = new CalendarFragment();
            break;
        }
        case R.id.activityButton:{
            fragment = new ActivityFragment();
            break;
        }
        case R.id.contactsButton:{
            fragment = new ContactsFragments();
            break;
        }
    }
    ft = getFragmentManager().beginTransaction();
    ft.replace(R.id.fragment_container,fragment);
    ft.addToBackStack(null);
    ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
    ft.commit();
}
公共类主页扩展AppCompatActivity实现HomeFragment.OnClickedListener、CalendarFragment.OnClickedCalListener{
私人碎片交易;
私有片段;
私人抽屉布局;
私有列表视图抽屉列表;
私人诉讼律师事务所;
字符串[]抽屉式字符串;
私有静态最终字符串PREFS_LOGGED_IN=“AreYouLoggedInFile”;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u主页);
字符串appVersion=“v1”;
initApp(这个“诸如此类”,“诸如此类”,appVersion);
if(findviewbyd(R.id.fragment\u容器)!=null){
如果(savedInstanceState!=null){
}否则{
Toast.makeText(getApplicationContext,“登录”,Toast.LENGTH.show();
}
}
工具栏myToolbar=(工具栏)findViewById(R.id.toolBarHome);
抽屉布局=(抽屉布局)findViewById(R.id.homePageDrawer);
抽屉列表=(ListView)findViewById(R.id.homePageList);
DroperListItems=getResources().getStringArray(R.array.activities);
setAdapter(新的ArrayAdapter(这个,android.R.layout.simple_list_item_1,抽屉列表));
DroperList.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
开关(位置){
案例0:{
fragment=新日历片段();
打破
}
案例1:{
fragment=新联系人fragments();
打破
}
案例2:{
fragment=新的HomeFragment();
打破
}
案例3:{
fragment=新的ActivityFragment();
打破
}
案例4:{
Toast.makeText(getApplicationContext(),“注销!”,Toast.LENGTH\u LONG.show();
意向i=新意向(HomePage.this、MainLoginActivity.class);
SharedReferences myPrefs=GetSharedReferences(已登录的PREFS,0);
SharedReferences.Editor=myPrefs.edit();
编辑器.putBoolean(“isLoggedIn”,false);
commit();
星触觉(i);
完成();
打破
}
}
ft=getFragmentManager().beginTransaction();
ft.replace(R.id.fragment_容器,fragment);
ft.addToBackStack(空);
ft.setTransition(碎片事务处理、传输、碎片淡入淡出);
ft.commit();
抽屉布局。封闭抽屉(抽屉列表);
}
});
DroperToggle=new ActionBarDrawerToggle(此,DroperLayout,myToolbar,R.string.drawer\u打开,R.string.drawer\u关闭)
{
@凌驾
打开图纸上的公共空白(视图抽屉视图){
super.onDrawerOpened(抽屉视图);
无效操作菜单();
syncState();
}
@凌驾
图纸上的公共空白已关闭(视图抽屉视图){
super.onDrawerClosed(抽屉视图);
无效操作菜单();
syncState();
}
};
抽屉布局。设置抽屉链接器(抽屉切换);
设置支持操作栏(myToolbar);
myToolbar.setLogo(R.drawable.happy\u dog\u图标);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
drawerToggle.syncState();
}
@凌驾
后期创建时受保护的空(捆绑包savedInstanceState){
super.onPostCreate(savedInstanceState);
drawerToggle.syncState();
}
@凌驾
公共无效OnConfiguration已更改(配置newConfig){
super.onConfigurationChanged(newConfig);
drawerToggle.onConfigurationChanged(newConfig);
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
getMenuInflater().充气(R.menu.menu,menu);
返回super.onCreateOptions菜单(菜单);
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
开关(item.getItemId()){
案例android.R.id.home:{
if(抽屉布局isDrawerOpen(抽屉列表)){
抽屉布局。封闭抽屉(抽屉列表);
}否则{
抽屉布局。打开抽屉(抽屉列表);
}
返回true;
}案例R.id.infoActionBar:{
Toast.makeText(getApplicationContext(),“嘿”,Toast.LENGTH_LONG.show();
}
默认:返回super.onOptionsItemSelected(项目);
}
}
@凌驾
public void onBackPressed(){
如果(getFragmentManager().GetBackBackbackEntryCount()>0){
格特格拉姆