2010-06-22 5 views
2

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

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

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

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

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

Некоторый код:

первая активность:

 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 намерения от моей основной деятельности.

+1

Я предполагаю, что вы запускаете деятельность настройки, поскольку некоторые настройки неправильно настроены для вашей деятельности? Почему вы не можете просто проверить, правильны ли эти настройки в onResume()? – alexanderblom

+0

Что вы имели в виду в onResume? почему я должен проверить его там? – rayman

ответ

2

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

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

+1

Ive пробовал, что это не сработало .. onActivityResult никогда не вызывается в моей деятельности по вызову .. (mybe coz result никогда не отправлялся обратно ??) !! – rayman

+0

Вы пробовали без FLAG_ACTIVITY_NEW_TASK? Чтение документации, похоже, может быть проблемой: http://developer.android.com/guide/topics/fundamentals.html#acttask –

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 
      } 
     } 
    } 
+0

спасибо, как и ответ 1 – rayman

-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()"); 
    } 

} 
+0

Пожалуйста, используйте предварительный просмотр, чтобы узнать, форматируется вправо и добавляет текст, возможно, цитату со ссылкой, где пользователь может узнать больше о вашем ответе и лучше понять ответ. –

Смежные вопросы