0

ユーザーの選択に従って、特定の時間間隔でアプリを閉じたいです。

だから私がしたことは、時間間隔のリストを表示し、選択したリスト項目に従って、それをハンドラーと実行可能および遅延後のメソッドに渡すことです。特定の時間にアプリを終了する別の効率的な方法を知っている人はいますか?

これが私のコードです

setContentView(R.layout.audio_player);
    mp = new MediaPlayer();
      lv1=(ListView)findViewById(R.id.listView1);
    Button b = (Button)findViewById(R.id.stop);
    tv =(TextView)findViewById(R.id.tv);
     lv1.setAdapter(new ArrayAdapter<String>(this,R.layout.testxml, lv_arr));
        lv1.setOnItemClickListener(new OnItemClickListener() {
      public void onItemClick(AdapterView<?> parent, View view,
          int position, long id) {
        //  final TextView mTextView = (TextView)view;
          switch (position) {
            case 0:
                j=2;
                Toast t = Toast.makeText(Play.this, "2 min selected",Toast.LENGTH_SHORT);
                 t.show();
              break;
            case 1:
                j=5;
                Toast t1 = Toast.makeText(Play.this, "5 min selected ",Toast.LENGTH_SHORT);
                 t1.show();    break;

            case 2:
                j=10;
                Toast t2 = Toast.makeText(Play.this, "10 min selected",Toast.LENGTH_SHORT);
                 t2.show();    break;

            case 3:
                j=15;
                Toast t3 = Toast.makeText(Play.this, "15 min selected",Toast.LENGTH_SHORT);
                 t3.show();    
        break;
            default:
              // Nothing do!
          }

      }
    });
    try {
        mp.setDataSource("http://94.55.45.123/bbc");
        mp.prepare();
    } catch (IllegalArgumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (SecurityException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IllegalStateException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
            mp.start();
 b.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            handler=new Handler();
            final Runnable r = new Runnable()
            {
                public void run() 
                {

                        myFinish();
                }
            };

            handler.postDelayed(r, (60*1000)+j);
             i++;
        }
        private void myFinish() {
            // TODO Auto-generated method stub
            Toast t1 = Toast.makeText(Play.this, "Music stop",Toast.LENGTH_SHORT);
         t1.show();
        mp.stop();
         finish();
         Intent intent = new Intent(Intent.ACTION_MAIN); 
         intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
         intent.addCategory(Intent.CATEGORY_HOME); 
         startActivity(intent);
        }


    });

}
4

1 に答える 1

0

通常、短い遅延の場合は、使用しているpostDelayed()アプローチで十分です。

ルールがあるかどうかはわかりませんが、通常、5 分以上の遅延にはAlarmManager.

于 2012-11-29T04:57:47.333 に答える