2016-08-03 4 views
0

イメージとテキストを含むフラグメントがあります。私のアプリケーションは非常にゆっくりと実行されており、ナビゲーションドロワはスライドするのに30秒かかります。メインスレッドでは何を使用していますか? Run()メソッドのtextViewImageViewを別のスレッドでコンパイルすると宣言しています。メインスレッドで作業が多すぎますか?

フラグメント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); 

    } 
} 

私MainActivityの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

これは非常に非センスコードです。 _Handler_を使用する – Piyush

答えて

0

あなたが.run()を使用しないで、スレッドでRunnableを実行する必要があります。

Thread thread = new Thread(this /* the runnable */); 
thread.start(); 
関連する問題