Синхронные действия Android - PullRequest
2 голосов
/ 22 июня 2010

В моем последнем вопросе я неправильно сформулировал тему, поэтому я открываю этот новый вопрос, чтобы очистить то, чего я действительно хочу. извините за неудобства.

Я хочу выполнять два системных (Android) действия один за другим в определенном порядке из моего основного действия.

Теперь, как мы знаем, startActivity является асинхронной операцией, поэтому я не могу придерживаться определенного порядка.

поэтому я подумал, что, может быть, я должен попытаться сделать это с dialogBox посередине, но также запуск диалогового окна является асинхронным.

Теперь, как я уже сказал, действия, которые я пытаюсь выполнить, являются действиями для Android, поэтому я даже не могу запустить их с помощью startActivityForResult (или, может, я могу, но я не получаю никакого результата обратно к моей основной (вызывающей) деятельности) Какие уловки, как я мог справиться с этой проблемой?

Код:

первое занятие:

      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); 

как видите, у меня нет доступа к этим активам, я могу просто выполнить их намерения из своей основной деятельности.

Ответы [ 3 ]

2 голосов
/ 22 июня 2010

Поскольку невозможно одновременно запустить 2 действия, запустите первое, а затем запустите второе, как только вернется первое.

Одним из способов отслеживания этого является использование метода startActivityForResult, этодолжен позволять вам контролировать порядок создания действий.

1 голос
/ 22 июня 2010

Попробуйте это ...

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
            }
        }
    }
0 голосов
/ 24 ноября 2015
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()");
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...