转到另一个活动时,Timer()功能不起作用

时间:2016-03-25 04:03:44

标签: java android android-activity timer

在我的应用程序中,我希望在5秒后使用Timer()函数关闭它。当我在MainActivity时工作,但当我去另一个活动然后应用程序不关闭。现在如何运行这个Timer()函数在后台,如果我切换活动。在这种情况下该怎么做?

    Timer timer = new Timer();
    timer.schedule(new TimerTask() {

        public void run() {

            finish();

        }

    }, 5000); // Application will be closed after 5 seconds

1 个答案:

答案 0 :(得分:3)

使用广播接收器实现此目的。在你想要完成的活动中,你需要创建广播接收器。

public class TestActivity extends Activity {

public static String intent_filter_finish = "com.test.finish";

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

           registerReceiver(finishReceiver,
                new IntentFilter(intent_filter_finish));

    }

    @Override
    protected void onDestroy() {
        unregisterReceiver(finishReceiver);
        super.onDestroy();
    }


    BroadcastReceiver finishReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {

            finish();

        }
    };

}

现在在你的第二项活动中你需要在5秒后发送广播,例如

public class SecondActivity extends Activity {

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

       new Handler().postDelayed(new Runnable() {

        @Override
        public void run() {
            sendBroadcast(new Intent(TestActivity.intent_filter_finish));

        }
    }, 5000);

    }

}

或其他可能的方法是在您的测试活动中直接使用postDelayed()方法,例如

new Handler().postDelayed(new Runnable() {

        @Override
        public void run() {
            finish();

        }
    }, 5000);