同步Android活动

时间:2010-06-22 07:24:11

标签: android

我在上一个问题中提出了错误的主题,所以我打开这个新问题来清除我真正想要的东西。很抱歉给您带来不便。

我想从我的主要活动中按特定顺序依次运行两个系统(Android)活动。

现在我们知道,startActivity是一个异步操作,所以我不能保持特定的顺序。

所以我想也许我应该尝试在中间使用dialogBox但是运行一个dialogBox是异步的。

现在我说我尝试运行的活动是Android活动,所以我甚至无法用startActivityForResult启动它们(或mybe我可以,但我没有得到任何结果回到我的主(调用)活动) 任何技巧我怎么能解决这个问题?

一些代码:

第一项活动:

      Intent intent = new Intent(); 
      intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      intent.setAction(Settings.ACTION_APPLICATION_SETTINGS); 
      startActivity(intent);    

第二项活动:

Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
intent.setDataAndType(Uri.fromFile(tmpPackageFile 
        .getAbsoluteFile()), 
        "application/vnd.android.package-archive"); 
startActivity(intent); 

你可以看到,我没有任何访问这些活动,我可以从我的主要活动运行thire意图。

3 个答案:

答案 0 :(得分:2)

由于您无法同时运行2个活动,因此请先启动第一个活动,然后在第一个活动返回时启动第二个活动。

跟踪此方法的一种方法是使用startActivityForResult方法,它应该允许您控制活动的创建顺序。

答案 1 :(得分:1)

试试这个......

Intent intent = new Intent(Settings.ACTION_APPLICATION_SETTINGS);
                startActivityForResult(intent, 0);

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
        if (requestCode == 0) {
            if (resultCode == RESULT_OK) {

                // start the other activity

            } else if (resultCode == RESULT_CANCELED) {
                // Handle cancel
            }
        }
    }

答案 2 :(得分:-1)

public class MainActivity extends AppCompatActivity

{
    String msg="Android";

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.d(msg,"1:application created");

    }

    protected void onStart() {
        super.onStart();
        Log.d(msg,"2 The onStart() ");
    }
    protected void onResume() {
        super.onResume();
        Log.d(msg, "3 The onResume() ");
    }
    protected void onPause() {
        super.onPause();
        Log.d(msg, "4 The onPause() ");
    }
    protected void onStop() {
        super.onStop();
        Log.d(msg, " 5 The onStop() ");
    }

    public void onDestroy() {
        super.onDestroy();
        Log.d(msg, "6 The onDestroy()");
    }

}