0

Activity A 启动 Activity B 获取一些数据。B设置数据立即完成。这使 B 活动闪烁一次。有什么办法可以防止闪退吗?

TextToSpeech.java

Intent intent = new Intent(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
intent.setPackage(engine);
startActivityForResult(intent, VOICE_DATA_INTEGRITY_CHECK);

引擎活动获取requestCode,设置数据并完成。这使引擎活动显示 -> 设置数据 -> 完成。看起来像 Activity 的东西一闪而过。有什么办法可以防止这种情况发生吗?谢谢你。

4

2 回答 2

0
public void onCreate() {
    // startActivityForResult(intent, VOICE_DATA_INTEGRITY_CHECK);   
    new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                Activity activity = getActivity();
                if (activity != null && !activity.isFinishing() && !activity.isDestroyed()) {
                    startActivityForResult(intent, VOICE_DATA_INTEGRITY_CHECK);
                }
            }
        }, 500);
 }

我使用延迟 startActivityForResult 而不是直接调用它,否则它会显示一个空片段并立即闪出。

于 2016-04-01T02:52:54.670 回答
0

如果您要执行的操作不需要对用户界面做任何事情,您可以使用 Service/Content-Provide 而不是 Activity。

喜欢:

import android.app.Service;
import android.content.Intent;
import android.os.Binder;

import android.os.IBinder;

public class BackgroundService extends Service {


    private final IBinder mBinder = new LocalBinder();

    public class LocalBinder extends Binder {
        BackgroundService getService() {
            return BackgroundService.this;
        }
    }


    public int onStartCommand(Intent intent, int flags, int startId) {
        return START_STICKY;
    }

    @Override
    public IBinder onBind(Intent intent) {
        return mBinder;
    }
}

从活动 A 调用服务:

startService(new Intent(A.this,BackgroundService.class));
于 2016-02-16T08:57:02.613 回答