2012-01-03 11 views
0

私は自分のアプリでビデオを再生するためにVideoViewを使用していますので、動画ごとにたくさんのアクティビティを作成する必要があります。私の質問は、これをどうにか処理することですか?これまでに100以上のアクティビティを作成しています。私はあまりにも多くのアクティビティのために私のアプリが大きすぎるようにしたくありません。Androidであまりにも多くのアクティビティを処理するには?

+0

あなたは、各動画のアクティビティを作成している理由。リンクを通過して1つのビデオビューをアクティビティで使用し、ビデオ「次へ」/「前へ」をナビゲートします。 –

+0

あなたはそのためのチュートリアルはありますか? – Leon

+0

Leon、犯罪はありませんが、この質問に基づいて、商用ソフトウェアを作成する準備が整っていないことは自明です。あなたは、半分の機能を持つ、ひどく実装された、バグに襲われた別のアプリをAndroidマーケットにリリースすることで、誰も好意を持っているわけではありません。 AndroidとJavaで正しく設計する方法を学ぶために必要な時間を取って検討してください。あなたのアプリが2〜3つのアクティビティになるように記述されていることを考えれば、適切に配置すると1つで十分でしょう。 –

答えて

0

はまあ、はっきり言って、ほとんどの開発者は、機能性と低の間でジャグリングの行為を行う必要が役立つかもしれないビューフリッパー

を使用することができます@Leonメモリフットプリント。可能な限り最良の実装は、さまざまなアクティビティ状態を念頭に置いて行われます。それについて読むhere

これはあなたの側からできることは最高です。 Androidは、他のアクティブなアプリにリソースが必要な場合、バックグラウンドで実行中のアクティビティを常に「強制終了」します。

+0

あなたはそれが助けられないと言っているのですか? – Leon

+0

全くありません。アクティビティ状態を適切に管理すると、通常、それが正常に行われます。 –

+0

「活動状態の管理」とはどういう意味ですか? – Leon

0

ここでは、1つのアクティビティで次/前のビデオをナビゲートするコードを示します。プレイリストのように。

public class Test11Activity extends Activity { 
private int currentVideo=0; 
ArrayList<String> httpLinkArrayList = new ArrayList<String>(); 
VideoView videoView; 
Button n_button; 
Button p_button; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    httpLinkArrayList.add("http://abb.mp4"); 
    httpLinkArrayList.add("http://abb1.mp4"); 
    httpLinkArrayList.add("http://abb2.mp4"); 
    httpLinkArrayList.add("http://abb3.mp4"); 
    httpLinkArrayList.add("http://abb4.mp4"); 


    LinearLayout mainlayout = new LinearLayout(this); 

mainlayout.setOrientation(LinearLayout.VERTICAL)。 LinearLayout n_p_layout =新しいLinearLayout(this);

n_button = new Button(this); 
    n_button.setText("Next"); 
    n_button.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      // TODO Auto-generated method stub    
      if(currentVideo<httpLinkArrayList.size()){ 
       currentVideo++; 
       videoView.setVideoURI(Uri.parse(httpLinkArrayList.get(currentVideo))); 
       videoView.start(); 
      } 
     } 
    }); 
    p_button = new Button(this); 
    p_button.setText("Previous"); 
    p_button.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub    
      if(currentVideo>0){ 
       currentVideo--; 
       videoView.setVideoURI(Uri.parse(httpLinkArrayList.get(currentVideo))); 
       videoView.start(); 
      } 
     } 
    }); 
    n_p_layout.addView(n_button); 
    n_p_layout.addView(p_button);   

    videoView = new VideoView(this); 
    videoView.setVideoURI(Uri.parse(httpLinkArrayList.get(currentVideo))); 
    videoView.start(); 
    videoView.setOnCompletionListener(new OnCompletionListener() { 

     @Override 
     public void onCompletion(MediaPlayer arg0) { 
      // TODO Auto-generated method stub    
      if(currentVideo<httpLinkArrayList.size()){ 
            currentVideo++; 
       videoView.setVideoURI(Uri.parse(httpLinkArrayList.get(currentVideo))); 
       videoView.start(); 
      } 
     } 
    }); 

    mainlayout.addView(n_p_layout); 
    mainlayout.addView(videoView); 

    setContentView(mainlayout); 
} 

}

あなたに役立つ願っています。:)

+0

メインレイアウトを投稿することもできますか? – Leon

+0

mainlayoutは単純な線形レイアウトです。要件ごとにプロパティを設定できます。 –

+0

どのようにコントロールがありませんか? – Leon

関連する問題