等待活动后重新开始我的活动

时间:2014-01-21 20:09:22

标签: android background android-activity

在Android上,我正在尝试设计一个活动来引导用户完成一些系统设置更改。我知道如何检测设置是否已启用,我会将该检查放在后台线程的循环中,并且正确检测用户何时进行更改。我希望我的活动在更改发生时自动弹回到前台。我在那里有一个startActivity调用,但是它没有工作。

final Thread mSettingCheck = new Thread() {
    @Override
    public void run() {
        try {
            for (int i = 0; i < 600; i++) {
                if (WizardUtils.isSettingChecked()) {
                    Handler handler = new Handler(Looper.getMainLooper());
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                        Intent intent = new Intent(getApplicationContext(), WizardActivity.class);
                        startActivity(intent);
                        }
                    }); 
                    Log.i("tag", "yay!");
                    break;
                }
                sleep(500);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
};

我得到日志输出行说“yay”所以我知道它正在检测,但我没有看到活动启动到前台。谁知道我做错了什么?

1 个答案:

答案 0 :(得分:0)

这里的解决方法是使用Pending Intent。

private void returnToWizard() {
    Handler handler = new Handler(Looper.getMainLooper());
    handler.post(new Runnable() {
        @Override
        public void run() {
            Intent intent = new Intent("android.intent.category.LAUNCHER");
            intent.setClassName("package name", "activity name");
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            PendingIntent i2 = PendingIntent.getActivity(getApplicationContext(), 0, intent,
                    Intent.FLAG_ACTIVITY_NEW_TASK);
            try {
                i2.send(getApplicationContext(), 0, intent);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}