2016-08-03 2 views
0

J'ai un fragment qui a une image et un texte. mon application fonctionne très lentement et le tiroir de navigation prend 30 secondes pour glisser. Qu'est-ce que j'utilise dans le fil principal? Je déclare les textView et ImageView dans la méthode Run() à compiler dans un thread différent.Trop de travail sur le fil principal?

Fragment Java;

public class headercode extends Fragment implements Runnable{ 

    ImageView image; 
    TextView text; 
    View myView;  

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 

     myView = inflater.inflate(R.layout.frag, container, false); 
     this.run(); 
     return myView; 
    } 
    @Override 
    public void run(){ 
     android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_BACKGROUND); 
     image = (ImageView)myView.findViewById(R.id.image); 
     image.setBackgroundResource(R.drawable.ahmed); 
     text = (TextView)myView.findViewById(R.id.text); 

    } 
} 

ma MainActivity méthode Java OnCreate;

public class MainActivity extends AppCompatActivity 
     implements NavigationView.OnNavigationItemSelectedListener { 

    Button button; 
    headercode header; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);  

     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
       this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
     drawer.setDrawerListener(toggle); 
     toggle.syncState();  

     NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
     navigationView.setNavigationItemSelectedListener(this); 

     if (findViewById(R.id.fragment) != null){ 

      header = new headercode(); 
      getSupportFragmentManager().beginTransaction().add(R.id.fragment,header).commit(); 
     } 

    } 
+1

Ceci est très code non sens. Utilisez _Handler_ – Piyush

Répondre

0

Vous devez exécuter le Runnable dans un thread, ne pas utiliser .run():

Thread thread = new Thread(this /* the runnable */); 
thread.start();