如何使用Threads启动Activity任务?

时间:2017-07-15 19:10:52

标签: java android multithreading android-intent android-handler

我想在按下按钮时启动 Main2Activity 任务(加载WebView)但不显示Main2Activity的屏幕,直到 onPageFinished()被称为。我有一些想法可以通过Intents得到这个但是它似乎不起作用。 这是我的代码:

MainActivity.java

public class MainActivity extends AppCompatActivity {


Handler handler = new Handler(){
    @Override
    public void handleMessage(Message msg) {
        super.handleMessage(msg);
        Intent intent = new Intent(MainActivity.this,Main2Activity.class);
        startActivity(intent);
    }
};
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final Button button = (Button)findViewById(R.id.Button);


    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            final Runnable runnable = new Runnable() {
                @Override
                public void run() {
                    handler.sendEmptyMessage(0);
                }

            };
            Thread thread = new Thread(runnable);
            thread.start();
        }
    }
    );
 }

 }

Main2Activity.java

public class Main2Activity extends AppCompatActivity {

Intent intent;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);
    final WebView webView = (WebView)findViewById(R.id.webview);
    webView.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(webView, url);
            intent.putExtra("DONE",1);

            //    Toast.makeText(getApplicationContext(), "Done!", 
            //Toast.LENGTH_SHORT).show();
}
    });
    webView.loadUrl("file:///android_asset/2.2.html");
}
}

这可能使用Intents,或者我必须使用其他一些技术吗? 我怎样才能实现这一目标?

全部谢谢。

1 个答案:

答案 0 :(得分:0)

我认为您应该在按钮点击时直接转到Main2Activity,而不需要调用MainActivity中的任何线程。

然后在Main2Activity中显示一个图像或其他东西,直到onPageFinished()被调用。