2

我有关于在同一个活动中恢复多个线程:我的应用程序中有三个不同的线程,我称之为 AThread、BThread 和 CThread。

如果我的应用程序关闭并重新打开,我需要重新打开所有预览线程。我怎么能那样做?我想返回一个线程列表。这是一个不错的选择吗?就像是:

@Override
public Object onRetainNonConfigurationInstance() {
    return new ArrayList<Thread>(AThread, BThread, CThread);
}

然后,在 onCreate 函数中,调用一个“for each”来验证所有线程。就像是

    @Override
    public void onCreate(Bundle savedInstanceState) {
(...)
        super.onCreate(savedInstanceState);
        ArrayList<Thread> allThreads = (ArrayList<Thread>) getLastNonConfigurationInstance();
        AThread = allThreads.get(0);
        BThread = allThreads.get(1);
        CThread = allThreads.get(2);
        if (AThread != null && AThread.isAlive()) {
            // TODO SOMETHING
        }
        if (BThread != null && BThread.isAlive()) {
            // TODO SOMETHING
        }
        if (CThread != null && CThread.isAlive()) {
            // TODO SOMETHING
        }
    }

那是对的吗?有更好的主意吗?干杯 =)

4

1 回答 1

3

使用 aFragment来托管您Thread的 s (或更优选地是 a )AsyncTask并调用's方法。将在配置更改中保留,并且(及其s)不会与. 我相信这比使用.setRetainInstance(true)FragmentonCreateFragmentFragmentThreadActivityonRetainNonConfigurationInstance

于 2012-09-15T02:07:15.163 回答