игра брюс 2048
Главная / Программирование / Разработка приложений для Android 4.0 / Тест 1

Разработка приложений для Android 4.0 - тест 1

Упражнение 1:
Номер 1
Требуется определить, разрешается ли пакету com.company.app начать телефонный звонок без обращения к Диалоговому интерфейсу. Какой фрагмент кода может быть использован для этого?

Ответ:

 (1) context.getPackageManager().checkPermission("android.permission.MODIFY_PHONE_STATE", "com.company.app"); 

 (2) context.getPackageManager().checkPermission("android.permission.CALL_PHONE", "com.company.app"); 

 (3) context.getPackageManager().checkPermission("com.company.app", "android.permission.MODIFY_PHONE_STATE"); 

 (4) context.checkPermission("com.company.app", "android.permission.CALL_PHONE"); 

 (5) PackageManager.get("com.company.app").validatePermission("android.permission.CALL_PHONE"); 


Номер 2
На сайте размещено приложение. Как пользователь сможет установить это приложение?

Ответ:

 (1) пользователи должны запустить Development Mode на своем устройстве 

 (2) пользователи должны активировать опцию Unknown Sources в настройках своего устройства 

 (3) файл .apk должен быть подписан распознаваемым сертификатом 

 (4) Google должен предоставить сайту подписанные SSL сертификаты, которые должны быть установлены на веб-сервере 


Номер 3
Для каждого объекта Activity в приложении Android используется стиль:

Ответ:

 (1) android:theme атрибут элемента <application> 

 (2) android:theme атрибут элемента <activity> 

 (3) android:globalStyle атрибут элемента <application> 

 (4) android:style атрибут элемента <application> 

 (5) android:style атрибут элемента <activity> 


Номер 4
Нужно осуществить разрешение для URI контент-провайдера. Вы хотите указать путь, начинающийся с /contacts/. Какую конфигурацию для вашей службы необходимо поместить в файл AndroidManifest.xml?

Ответ:

 (1) <add-uri-permission android:pathPrefix="/contact/*" /> 

 (2) <grant-uri-permission android:pathPrefix="/contact/*" /> 

 (3) <grant-uri-permission android:pathPrefix="/" path="contacts" /> 

 (4) <add-uri-permission android:path="/contact/*" /> 

 (5) <grant-uri-permission android:path="/contact/*" /> 


Номер 5
    
 <permission-group android:description="@string/groupNetwork" 
 android:icon="@drawable/networkIcon"
 android:label="@string/groupNetworkLabel"
 android:name="@string/groupNetwork" />
    
    Для чего предназначен код?
   

Ответ:

 (1) для информирования Android о том, что все приложения и компоненты запускаются с использованием разрешения groupNetwork 

 (2) для логической группировки связанных разрешений 

 (3) для пользовательских разрешений groupNetwork 

 (4) для того чтобы убедиться, что приложение имеет права для доступа к ресурсам сети 

 (5) для информирования Android о том, что приложение использует разрешения groupNetwork 


Номер 6
    
 WebView myWebView = (WebView)findViewById(R.id.webview);
 myWebView.loadUrl{"http://www.example.com");
    
    Как убедиться в работоспособности кода?
   

Ответ:

 (1) обратиться к методу myWebView.reload() после кода 

 (2) добавить логическую переменную вторым аргументом метода loadUrl() 

 (3) вызвать метод myWebView.show() 

 (4) добавить в файл манифеста разрешение android.permission.INTERNET 

 (5) добавить разрешение android.permission.ALLOW_WEBVIEW в файл манифеста 


Упражнение 2:
Номер 1
Одиночное действие должно быть определено в файле AndroidManifest.xml и доступно под двумя названиями, с двумя отдельными наборами фильтров. Какой атрибут для этого используется?

Ответ:

 (1) <secondary-name>  

 (2) <copy-activity> 

 (3) <alternate-name> 

 (4) <activity-alias> 

 (5) <alternate-alias> 


Номер 2
Нужно осуществить разрешение для URI контент-провайдера. Вы хотите указать путь, начинающийся с /contacts/. Какую конфигурацию для вашей службы  необходимо поместить в файл AndroidManifest.xml?

Ответ:

 (1) <add-uri-permission android:pathPrefix="/contact/*" /> 

 (2) <grant-uri-permission android:pathPrefix="/contact/*" /> 

 (3) <add-uri-permission android:path="/contact/*" /> 

 (4) <grant-uri-permission android:path="/contact/*" /> 

 (5) <grant-uri-permission android:pathPrefix="/" path="contacts" /> 


Номер 3
Необходимо проверить имеет ли вызываемый процесс разрешение для программного доступа к сервису. Что для этого используется?

Ответ:

 (1) Process.validatePermission() 

 (2) Context.checkCallerPermissions() 

 (3) Security.validateCallingContext() 

 (4) Context.checkCallingPermission()  

 (5) Process.checkCaller() 


Номер 4
Что произойдет в том случае, если элемент <application> и элемент потомок <activity> имеют атрибуты иконок и меток?

Ответ:

 (1) из-за двусмысленных значений при компиляции будет выдано сообщение об ошибке 

 (2) из-за двусмысленных значений во время выполнения будет выдана ошибка 

 (3) ни одно значение не сможет быть использовано, так как Android не может определить, какое будет иметь приоритет 

 (4) значения <activity> переопределяют значения <application> 

 (5) значения <activity> всегда игнорируются 


Номер 5
    
 SharedPreferences settings = getSharedPreferences("MyPreferencesFileName", Context.MODE_PRIVATE);
 SharedPreferences.Editor pe = settings.edit(); 
 pe.putString("MyText", "Hello!"); 
 pe.commit();
    
    Другие приложения должны иметь доступ "только для чтения" к персональным настройкам Вашего приложения. Какое изменение осуществит данную возможность?
   

Ответ:

 (1) Context.MODE_PRIVATE на Context.OTHER_APPS_READABLE 

 (2) Context.MODE_PRIVATE на Context.MODE_WORLD_READABLE 

 (3) Context.MODE_PRIVATE на Context.MODE_WORLD_WRITEONLY 

 (4) Context.MODE_PRIVATE на Context.ALL_READABLE 

 (5) Context.MODE_PRIVATE на Context.MODE_WORLD_READONLY 


Упражнение 3:
Номер 1
Одиночное действие должно быть определено в файле AndroidManifest.xml и доступно под двумя названиями, с двумя отдельными наборами фильтров. Какой атрибут для этого используется?

Ответ:

 (1) <copy-activity> 

 (2) <alternate-alias> 

 (3) <alternate-name> 

 (4) <secondary-name> 

 (5) <activity-alias> 


Номер 2
На Android market опубликовано приложение, в файле манифеста которого прописана 5-я версия maxSdk. От пользователей поступают жалобы, что после обновления Android до версии 2.0.1 (API level 6) они не могут использовать данное приложение. После какого обновления приложение сможет работать на новой версии Android?

Ответ:

 (1) выполнить метод upgradeApp() в классе Activity 

 (2) добавить в файл манифеста элемент <upgrade previous="5" new="6" /> 

 (3) установить 6-ю версию maxSdk или выше и удалить предыдущие элементы из файла манифеста 

 (4) опубликовать новую версию приложения, настроенную под новую версию ОС 

 (5) установить 6-ю версию targetSdk или выше, и удалить предыдущие элементы из файла манифеста 


Номер 3
Где хранится сертификат приложения (cert.rsa) при построении в APK?

Ответ:

 (1) res 

 (2) res/cert 

 (3) web-inf 

 (4) meta-inf 

 (5) cert 


Номер 4
    
 <xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.company.app">
  <uses-sdk android:minSdkVersion="8" />
  <application
   android:icon="@drawable/ic1_launcher"
   android:label="@string/app1_name" >
   <activity android:label=@string/app1_name"
    android:name=".MainActivity" >
    <intent-filter>
     <action android:name="android.intent.action.MAIN" />
     <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
   </activity>
  </application>
  <application
   android:icon="@drawable/ic2_launcher" android:label="App#2" >
   <activity android:label="App#2" android:name=".MainActivity" >
    <intent-filter>
     <action android:name="android.intent.action.MAIN" />
     <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
   </activity> 
  </application>
 </manifest>    
    
    Почему данные на выходе некорректны?
   

Ответ:

 (1) неверное значение minSdkVersion 

 (2) два главных действия не могут существовать в одной библиотеке 

 (3) указанное пространство имен некорректно 

 (4) в файле AndroidManifest.xml нельзя использовать строковые значения, в качестве значений меток 

 (5) элемент <application> должен встречаться один раз 


Номер 5
Вы представили обновленную версию приложения, которое опубликовано на Android market. Тем не менее, вы получаете сообщения, что, когда люди пытаются установить обновление, оно устанавливается в качестве нового приложения, а не как обновление. Что вызывает данную проблему?

Ответ:

 (1) разрешение ALLOW_UPDATE не прописано в файле AndroidManifest.xml 

 (2) для подписи файла обновления .apk используются различные сертификаты 

 (3) до публикации на APK не был запущен zipalign 

 (4) для подписи файла .apk используются различные версии ключей 

 (5) имя приложения отличается от исходного 


Номер 6
На Android market опубликовано приложение, в файле манифеста которого прописана 5-я версия maxSdk. От пользователей поступают жалобы, что после обновления Android до версии 2.0.1 (API level 6) они не могут использовать данное приложение. После какого обновления приложение сможет работать на новой версии Android?

Ответ:

 (1) опубликовать новую версию приложения, настроенную под новую версию ОС 

 (2) добавить в файл манифеста элемент <upgrade previous="5" new="6" /> 

 (3) установить 6-ю версию maxSdk или выше, и удалить предыдущие элементы из файла манифеста 

 (4) выполнить метод upgradeApp() в классе Activity 

 (5) установить 6-ю версию targetSdk или выше, и удалить предыдущие элементы из файла манифеста 


Упражнение 4:
Номер 1
Реализован простой класс, осуществляющий SQLiteOpenHelper. Также данный класс содержит методы для выполнения различных операций с базами данных, таких как создание записей клиентов. Большинство операций используют простой метод execSQL(). Однако существует более сложная операция, требующая псевдонимы столбцов. Какой класс может быть использован для создания  более сложных SQL запросов?

Ответ:

 (1) SQLiteQueryBuilder 

 (2) SQLiteComplexQuery 

 (3) ComplexQueryHelper 

 (4) EnhancedSQLiteQuery 

 (5) ExtendedQueryBuilder 


Номер 2
    
     public class CustomerDBHelper extends SQLiteOpenHelper {
      CustomerDBHelper(Context context) {
        super(context, "CustomerDatabase", null, 1); 
      }
     
      @Override
      public void onCreate(SQLiteOatabase db) {
        db.execSQL("CREATE TABLE customers (lastName TEXT);"); 
      }
     }
    
    Почему данный класс НЕ может быть скомпилирован?
   

Ответ:

 (1) не выполнен метод onOpen() 

 (2) вместо SQLiteOpenHelper должно быть SQLiteDBHelper 

 (3) не выполнен метод onUpgrade() 

 (4) выполняемое SQL выражение не является допустимым 

 (5) третий аргумент конструктора суперкласса имеет некорректное значение NULL 


Номер 3
Файлы сохраняются на устройстве внутренней памяти. Что будет с файлами, когда пользователь удалит приложение?

Ответ:

 (1) удалятся 

 (2) останутся 

 (3) будут сжаты 

 (4) будут скопированы на внешнее устройство 

 (5) будут зашифрованы и сохранены, на случай, если приложение будет переустановлено 


Упражнение 5:
Номер 1
    
     File file = new File(myContext.getExternalFilesDir(null), "appData.txt"); 
     try {
      FileOutputStream os = new FileOutputStream(file, true);
      OutputStreamWriter out = new OutputStreamWriter(os);
      out.write{data);
      out.close(); 
     } catch (e) { }
    
    При компиляции ошибок не обнаружено, все переменные имеют корректные значения, устройства внешней памяти установлены и доступны. Какие еще условия должны быть соблюдены, чтобы с помощью данного кода можно было успешно сохранить файл с данными?
   

Ответ:

 (1) приложение должно запросить разрешение, вызвав метод canWriteExternalStorage() перед исполняемым кодом 

 (2) исключение должно генерироваться каждый раз до тех пор, пока не удастся сохранить файл 

 (3) значения данных должны быть приведены к типу файлового объекта 

 (4) в файле манифеста должно быть записано android.permission.WRITE_EXTERNAL_STORAGE 

 (5) в метод getExternalFilesDir() вместо NULL должно быть передано значение ИСТИНА 


Номер 2
Устанавливается приложение на устройство с операционной системой Android 4.0. Для воспроизведения аудио потоков из сети Интернет, приложение использует класс MediaPlayer. В предыдущих версиях Android все работало, однако в Android 4.0 поток не воспроизводится. Код приложения не дорабатывался и не предъявлялись никакие дополнительные требования. Что нужно изменить, чтобы аудио потоки воспроизводились всеми версиями Android, включая 4.0?

Ответ:

 (1) добавить разрешение ALLOW_STREAMS в файл AndroidManifest.xml 

 (2) обратиться к новому методу playRemoteStream() в классе MediaPlayer 

 (3) добавить разрешение INTERNET в файл AndroidManifest.xml 

 (4) заменить MediaPlayer на AsyncPlayer 

 (5) добавить разрешение INTERNET_AUDIO в файл AndroidManifest.xml 


Номер 3
Мобильные устройства часто подсоединяются к удаленным объектам через сеть, например, точки доступа Wi-Fi. Для безопасного соединения ваше устройство всякий раз должно:

Ответ:

 (1) использовать маршруты I/O низкоуровневой сети Linux 

 (2) запускать ProGuard на APK, чтобы убедиться, что действия в сети неочевидны 

 (3) использовать безопасные протоколы, такие как HTTP 

 (4) включить на устройстве 3G или 4G соединение 

 (5) использовать провайдеров для доступа к сетям, которые Android шифрует автоматически 


Упражнение 6:
Номер 1
Приложение сохраняет медиа файлы в одной из директорий SD карты. Необходимо, что данные файлы не могли быть  обнаружены с помощью Media Scanner. Какие действия должны быть предприняты?

Ответ:

 (1) в директории должен быть пустой файл с именем .noscan 

 (2) убедиться, что директория скрыта 

 (3) при запуске приложения вызвать SystemMediaScanner.ignoreDirectory(File) 

 (4) вначале всех имен файлов поставить точки, и тем самым показать, что они скрыты 

 (5) в директории должен быть пустой файл с именем .nomedia 


Номер 2
    
     1: boolean mExternalStorageAvailable = false;
     2: boolean mExtemalStorageWriteable = false;
     3: String state = Environment.getExternalStorageState{) ;
     4:
     5: if (Environment.MEDIA_MOUNTED.equals(state)) {
     6:  mExternalStorageAvailable = mExternalStorageWriteable = AAA;
     7: } else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
     8:  mExternalStorageAvailable = BBB;
     9:  mExternalStorageWriteable = CCC;
     10: } else {
     11:  mExternalStorageAvailable = mExternalStorageWriteable = DDD;
     12: }
    
    Необходимо установить значения флагов mExternalStorageAvailable и mExternalStorageWriteable, которые позволят корректно отобразить состояние внешнего устройства. Какие значения должны быть вместо AAA, BBB, CCC и DDD (строки 6, 8, 9 и 11 соответственно)?
   

Ответ:

 (1) false, false, true, true 

 (2) false, true, false, true 

 (3) true, false, true, false 

 (4) true, true, false, false 

 (5) true, false, false, true 


Номер 3
    
     public void onResume() { 
      super.onResume() ;
      if (NfcAdapter.XXXXXXXXXX.equals(getlntent().getAction())) { 
       Parcelable[] rawMsgs = intent.getParcelableArrayExtra(
        NfcAdapter.EXTRA_NDEF_MESSAGES
      );
       if (rawMsgs != null) {
        msgs = new NdefMessage[rawMsgs.length]; 
        for (int i = 0; i < rawMsgs.length; i++) {
         msgs[i] = (NdefMessage) rawMsgs[i]; 
        } 
       } 
      } 
     }
    
    Необходимо активировать действие кода как часть NDEF. Полезная нагрузка проявляется при получении NFC метки. Какая константа заменит XXXXXXXXXX?
   

Ответ:

 (1) ACTION_NDEF_DISCOVERED 

 (2) EXTRA_NDEF_MESSAGES 

 (3) ACTION_NFC_NDEF 

 (4) ACTION_TAG_DISCOVERED 

 (5) ACTION_PAYLOAD_FOUND 


Номер 4
Если пользователи жалуются на то, что во время сохранения данных на удаленном сервере быстро заканчивается батарея, разработчик должен  убедиться в том, что приложение не:

Ответ:

 (1) запрашивает низкоскоростное соединение, когда доступно высокоскоростное 

 (2) создаются несколько контент-провайдеров и каждому необходимо соединение 

 (3) используются фрагменты, в силу того, что UI зависит от сокетов 

 (4) постоянно повторяются неудавшиеся операции 

 (5) пытается соединиться с альтернативным сайтом, находящимся на большом расстоянии от устройства 


Упражнение 7:
Номер 1
    
     public boolean onCreateOptionsMenu(Menu menu) { 
      MenuInflater inflater = getMenuInflater(); 
      inflater.inflate(R.menu.mainnenu, menu); 
      return false;
     }
    
    Меню, реализованное с помощью данного фрагмента кода, не отображается. Программа не выдает никаких сообщений об ошибках. Что может быть возможной причиной? 
   

Ответ:

 (1) метод onCreateOptionsMenu() должен возвращать значение ИСТИНА 

 (2) Activity должно относиться к расширению MenuActivity 

 (3) R.menu.mainmenu некорректный формат для идентификатора ресурса 

 (4) MenuInflater одиночный объект не может быть выполнен 

 (5) вы должны вызвать метод commit() в Меню переданного объекта 


Номер 2
    
     public class MainActivity extends Activity { 
      @Override 
      public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedlnstanceState) ;
       setContentView(R.layout.main);
       getLoaderManager().initLoader(0, null, this); 
      }
      @Override 
      public Loader<Cursor> onCreateLoader(int id, Bundle args) {
       // Create and return a new Loader 
      } 
     } 
    
    Что надо добавить в исходный код, чтобы  метод onCreateLoader выполнялся при создании нового объекта класса Loader?
   

Ответ:

 (1) сделать MainActivity производным классом от LoaderManager 

 (2) передать значение, отличное от NULL, в качестве второго аргумента метода 

 (3) вызвать createLoader() вместо initLoader() 

 (4) получить ссылку на загрузчик в методе, отличном от onCreate() 

 (5) нужно, чтобы MainActivity мог выполнять интерфейс LoaderManager.LoaderCallbacks 


Номер 3
    
     public class MainActivity extends Activity { 
      @Override 
      public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedlnstanceState) ;
       setContentView(R.layout.main);
       getLoaderManager().initLoader(0, null, this); 
      }
      @Override 
      public Loader<Cursor> onCreateLoader(int id, Bundle args) {
       // Create and return a new Loader 
      } 
     } 
        
    Как убедиться что onCreateLoader() запускается, когда нужен новый Loader?
   

Ответ:

 (1) вызвать createLoader() вместо initLoader() 

 (2) нужно, чтобы MainActivity мог выполнять интерфейс LoaderManager.LoaderCallbacks 

 (3) передать значение, отличное от NULL, в качестве второго аргумента метода initLoader() 

 (4) получить ссылку на загрузчик в методе, отличном от onCreate() 

 (5) сделать MainActivity производным классом от LoaderManager 


Номер 4
Вы используете класс ListActivity, чтобы отобразить экран с одним Listview, из которого пользователь выбирает пункт. Вы хотите настроить отображение этого экрана. Предполагая, что отображение определено, какая строка кода позволит вам задать пользовательский макет с именем my_custom_layout?

Ответ:

 (1) setLayout(R.layout.my_custom_layout); 

 (2) setContentView("layout.my_custom_layout"); 

 (3) setContentView(R.layout.my_custom_layout); 

 (4) customContentView("R.layout.my_custom_layout"); 

 (5) defineLayout(R.layout.my_custom_layout); 


Номер 5
    
     public class MyActivity extends Activity implements OnClickListener { 
      @Override 
      public void onCreate(Bundle savedInstanceState) {
       setContentView(R.layout.main); 
      }
     }
    
    Какая проблема проиллюстрирована с помощью данного кода?
   

Ответ:

 (1) пропущена @Override аннотация 

 (2) вызов super.onCreate() отсутствует в методе onCreate() 

 (3) вместо метода setContentView() должен быть setContentLayout() 

 (4) ссылочный объект некорректный аргумент для метода onCreate() 

 (5) класс, наследуемый от Activity, не может выполнять OnClickListener 


Номер 6
Fragment должен быть всегда определен в:

Ответ:

 (1) Space 

 (2) LayoutManager 

 (3) CompositeView 

 (4) ViewGroup 

 (5) ViewStub 


Упражнение 8:
Номер 1
Какой метод не участвует в жизненном цикле  Activity

Ответ:

 (1) onCreate() 

 (2) onDestroy() 

 (3) onSaveInstanceState() 

 (4) onRestart() 

 (5) onPause() 


Номер 2
    
    Какие разделы могут быть пропущены при создании провайдера, потребляющего контент?
   

Ответ:

 (1) A и C 

 (2) A и D 

 (3) B и D 

 (4) A и B 

 (5) C и D 


Номер 3
Когда происходит запуск действия с использованием метода startActivityForResult(), другие действия считаются

Ответ:

 (1) derived-activity 

 (2) dependant-activity 

 (3) secondary-activity 

 (4) launched-activity 

 (5) sub-activity 


Номер 4
Виджет ListView получает сообщения от:

Ответ:

 (1) ContentProvider 

 (2) DataAdapter 

 (3) ListAdapter 

 (4) ListViewProvider 

 (5) ListDataManager 


Номер 5
Какой класс асинхронно соединяет и контролирует источники данных и передает их клиенту?

Ответ:

 (1) Fragment 

 (2) DataBridge 

 (3) Loader 

 (4) DataProvider 

 (5) RemoteCursor 


Упражнение 9:
Номер 1
Разрабатывается приложение, в котором должна быть возможность добавлять события в пользовательский календарь. В файле AndroidManifest.xml не нужно настраивать никакие дополнительные разрешения. Как достигнуть данной цели?

Ответ:

 (1) использовать CALENDAR.INSERT, отправляя детали события как POST параметры 

 (2) запросить разрешение WRITE_CALENDAR о времени выполнения приложения, используя метод PermissionManager.grantRuntimePermission() 

 (3) использовать INSERT и отправить детали события как дополнительные данные 

 (4) вставить данные напрямую, через доступ к основной XSL базе данных 

 (5) отправить детали события как XML файл и активировать действие, позволяющее заполнить календарь 


Номер 2
Какая последовательность обработчиков обратного вызова класса Activity выполняется сначала?

Ответ:

 (1) onCreate, onStart, onResume 

 (2) onStart, onInit, onResume 

 (3) onCreate, onStart, onRunning 

 (4) onCreate, onRestart, onResume 

 (5) onPreInit, onCreate, onRunning 


Номер 3
Необходимо сохранить личные файлы, созданные в приложении.  Нужен только список имен файлов. Какой метод необходимо использовать?

Ответ:

 (1) InputStream.listFiles() 

 (2) File.getFiles() 

 (3) AssetManager.listPrivateFiles() 

 (4) Context.fileList() 

 (5) Context.getFileNames() 


Номер 4
Необходимо отобразить данные контент-провайдера в ListView. Какую колонку нужно вернуть как часть записи контент-провайдера?

Ответ:

 (1) uniqueID 

 (2) _ID 

 (3) key 

 (4) _COUNT 

 (5) _Index 


Упражнение 10:
Номер 1
Виртуальное устройство Android – это:

Ответ:

 (1) экземпляр Android SDK для конкретного Android API 

 (2) целевая сборка конфигурации, определенной внутри Eclipse, предназначенная для генерации APK 

 (3) интернет-объект для демонстрации APK для пользователей бета версий 

 (4) эмулятор, представляющий определенную конфигурацию устройства 

 (5) JVM-изображение, используемое для отладки приложения на рабочем столе 


Номер 2
Какое из средств отладки вы используете, чтобы делать скриншоты приложений, запущенных на устройстве?

Ответ:

 (1) Monkey 

 (2) DDMS 

 (3) scrcap 

 (4) Dev Tools 

 (5) adb 


Номер 3
Какая команда используется для просмотра результатов отладки?

Ответ:

 (1) adblog 

 (2) outview 

 (3) traceview 

 (4) tailer 

 (5) logcat 


Упражнение 11:
Номер 1
Для каких интегрированных сред (IDE) Google предлагает надстройки для разработки под Android?

Ответ:

 (1) Netbeans 

 (2) JBuilder 

 (3) IntelliJ IDEA 

 (4) Eclipse 

 (5) JDeveloper 


Номер 2
    
 public class greeter {
  public String buildGreeting(String firstName) {
   String greetingl = "Hello, ";
   String greeting2 = ", and welcome to the application!";
   return greetingl + firstName + greeting2; 
  }
  
  public StringBuffer getGreeting{String firstName) {
   StringBuffer sb = new StringBuffer(); 
   sb.append(buildGreeting(firstName)); 
   return sb;
  }
 }
    
    Как вызвать метод getGreeting(), не создавая временных объектов?
   

Ответ:

 (1) использовать лямбда выражение, для того чтобы контекст выполнялся в стеке, а не в очереди 

 (2) использовать более эффективный класс ParallelStringBuffer вместо StringBuffer 

 (3) использовать шаблоны в методе buildGreeting() вместо сложения строк 

 (4) изменить параметры доступа к buildGreeting(), для того чтобы объекты можно было добавлять напрямую в класс StringBuffer 

 (5) сделать все аргументы метода конечными и создать их копии, чтобы работать в обоих методах одновременно 


Номер 3
Необходимо проверить, необходим ли каждый элемент строкового типа  приложению. Запуск приложения производится в режиме эмулятора, на языке, установленном по умолчанию. Как осуществить проверку?

Ответ:

 (1) запустить DDMS в приложении и посмотреть на ошибки с сообщением "Missing String Resource" 

 (2) запустить приложение и посмотреть на выданные исключения с сообщением ResourceUndefined 

 (3) установить в эмуляторе неподдерживаемый язык и запустить приложение 

 (4) использовать для проверки приложение Dev Tools, размещенное в эмуляторе, с использованием adb 

 (5) запустить инструмент resourceValidation в файле APK и убедиться, что файл errors.txt пуст 


Номер 4
Необходимо получить удаленный доступ к системе для сохранения данных. Удаленная система имеет REST интерфейс. В приложения могут быть добавлены только библиотеки Android.

Ответ:

 (1) javax.ws.rs 

 (2) javax.ws.rest 

 (3) java.net.rest 

 (4) org.apache.cxf 

 (5) org.apache.http 


Упражнение 12:
Номер 1
Вы просматриваете результаты трассировки вашего приложения. Приложение создает потоки, чтобы справиться с интенсивно-вычислительной работой. Вы знаете, что приложение создает несколько потоков в течение определенного времени, однако в результатах трассировки видите только один. Что вызывает данную проблему?

Ответ:

 (1) потоки выполняются очень быстро, и трассировка не может засечь каждый 

 (2) трассировка не может засечь более одного потока в одно и то же время 

 (3) VM использует ID потока, который и отображается в процессе трассировки 

 (4) VM экономит ресурсы, объединяя несколько потоков в один 

 (5) приоритет потоков не определен, из-за чего один из них блокируется при трассировке 


Номер 2
    
 package company.app.aidl; 
 interface IMathService { 
  // INSERT CODE HERE
 }
    
    На месте комментария должен быть метод, в который можно передать два целых значения, перемножить их и вернуть результат. Это:
   

Ответ:

 (1) out int multiply(in int n1, in int n2); 

 (2) out:int multiply(in:int:n1, in:int:n2); 

 (3) multiply(in int n1, in int n2) int; 

 (4) multiply(out int, in int n1, in int n2); 

 (5) int multiply(in int n1, in int n2); 


Номер 3
Вы пытаетесь устранить неполадки приложения с помощью журнала регистрации. На выходе слишком много данных, которые могут быть использованы. Вы должны ограничить количество данных на выходе. Необходимо получить данные отладки от ActivityManager, а также от приложения (используется метка CustomerProcessor). Какие фильтры необходимо использовать для получения необходимых данных?

Ответ:

 (1) ActivityManager:I CustomerProcessor:D 

 (2) ActivityManager(I) CustomerProcessor(D) *(S) 

 (3) ActivityManager:I CustomerProcessor:D *:S 

 (4) --ActivityManager=info --CustomerProcessor=debug --All=silent 

 (5) ActivityManager=I CustomerProcessor=D 


Номер 4
Вы работаете с кодом, использующим базу данных SQLite. SQL запросы не возвращают ожидаемых значений. Необходимо проверить некорректные данные и структуры таблиц, когда приложение будет запущено в режиме эмулятора. Какой инструмент вы используете для устранения неполадок базы данных?

Ответ:

 (1) sqlite3debug 

 (2) sqlite3 

 (3) sqliteviewer 

 (4) sltool 

 (5) sqlitedump 


Упражнение 13:
Номер 1
Какая команда отправляет файл myFile.txt из директории /work/project1 на устройство Android в директорию /sdcard/myProject?

Ответ:

 (1) adb /work/project1/myFile.txt /sdcard/myProject/myFile.txt 

 (2) adb push /work/project1/myFile.txt /sdcard/myProject/myFile.txt 

 (3) sftp upload /work/project1/myFile.txt /sdcard/myProject/myFile.txt 

 (4) telnet dev:null /work/project1/myFile.txt /sdcard/myProject/myFile.txt 

 (5) adb send /work/project1/myFile.txt /sdcard/myProject/myFile.txt 


Номер 2
Java файлы с исходным кодом, применяемые на платформе Android, относятся к типу

Ответ:

 (1) .odex 

 (2) .dalvik 

 (3) .cls 

 (4) .dex 

 (5) .avm 


Номер 3
Какой класс используется для отправки СМС-сообщений?

Ответ:

 (1) android.os.MessageManager 

 (2) dalvik.system.SmsGenerator 

 (3) android.net.SmsSender 

 (4) java.net.SmsComm 

 (5) android.telephony.SmsManager 


Упражнение 14:
Номер 1
Необходимо создать образ SD карты с файловой системой FAT32, который может быть протестирован на устройствах с различными конфигурациями. Какая программа позволит создать данный образ?

Ответ:

 (1) mksdcard 

 (2) mksdimg 

 (3) fat32img 

 (4) makefat32img 

 (5) sdcard 


Номер 2
Для разделения приложений, Android присваивает каждому:

Ответ:

 (1) идентификатор, производный от имени библиотеки 

 (2) GUID 

 (3) отдельный ключ 

 (4) уникальный временной шифр 

 (5) уникальный Linux ID 


Номер 3
Во время отладки объем памяти, используемой приложением, увеличивается, потому что:

Ответ:

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

 (2) для отладки запускается скрытая копия приложения 

 (3) отладчик не замечает окончания потоков 

 (4) сборщик мусора не работает во время отладки 

 (5) VM не собирает мусор, который замечает отладчик 


Номер 4
Какая команда используется, для того чтобы увидеть результат отладки?

Ответ:

 (1) traceview 

 (2) tailer 

 (3) logcat 

 (4) outview 

 (5) adblog 


Упражнение 15:
Номер 1
Запущен долговременный процесс, и вы не хотите, чтобы он влиял на поток UI. Вы решили создать новый поток, но не хотите писать шаблонный код для управления потоками? Какой класс предлагает необходимую функциональность?

Ответ:

 (1) AsyncTask 

 (2) UIThread 

 (3) Runnable 

 (4) BackgroundTask 

 (5) UIWorker 


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

Ответ:

 (1) в приложении не запущен zipalign 

 (2) неверна цифровая подпись, используемая APK 

 (3) служба вызывает web–сервисы, однако система этого делать не позволяет 

 (4) стандартная обработка в Android производится в одном потоке 

 (5) в приложении не указаны соответствующие ограничения 


Номер 3
Вызывается метод, выполняемый в IBinder и изначально созданный другим процессом. Что происходит с методом?

Ответ:

 (1) вызов создает новый поток внутри UI потока 

 (2) исполняется в потоке того же процесса, что и IBinder 

 (3) исполняется в исходном потоке 

 (4) исполняется в потоке того же процесса, что и исходный 

 (5) вызов не выполняется, а исключение SecurityViolationException отбрасывает назад 


Номер 4
Приложение пытается соединиться со службой другого разработчика. Код, отвечающий за освобождение ресурсов, отсутствует. Во время теста приложение отключается из-за недостаточного количества ресурсов. Проблема возникла из-за того, что вы не вызвали:

Ответ:

 (1) releaseService() 

 (2) destroyService() 

 (3) unbindService() 

 (4) stopService() 

 (5) completeService() 


Упражнение 16:
Номер 1
    
     1: public class ProgressTestActivity extends Activity {
     2:
     3:   private Handler handler;
     4:   private ProgressBar progress;
     5:
     6:   @Override
     7:   public void onCreate{Bundle savedInstanceState) {
     8:   super.onCreate(savedInstanceState);
     9:   setContentView(R.layout.main);
     10:  progress = (ProgressBar)findViewById(R.id.progressBar);
     11:  handler = new Handler();
     12:  }
     13:
     14:  public void startProgress(View view) {
     15:  Runnable runnable = new Runnable() {
     16:   @Override
     17:   public void run() {
     18:    for (int i = 0; i <= 10; i++) {
     19:     final int value = i;
     20:     try {
     21:      Thread.sleep(2000);
     22:     } catch {InterruptedException e) { }
     23:     handler.post(new Runnable() {
     24:      @Override
     25:      public void XXX() {
     26:       progress.setProgress(value);
     27:      }
     28:     });
     29:    }
     30:   }
     31:  };
     32:      new Thread(runnable).start();
     33:     }
     34:  }    
    
    Какой метод заменит XXX в 25-й строке, для того чтобы progress bar периодически обновлялась?
   

Ответ:

 (1) post 

 (2) run 

 (3) execute 

 (4) update 

 (5) handleMessage 


Номер 2
В приложении появляется диалоговое окно с сообщением Application Not Responding. В приложении один экран с несколькими текстовыми полями, кнопка "Сохранить" данные в текстовый файл и приемник, запускающийся, когда пользователь нажимает на кнопку "Сохранить". Сто тестов показали, что данные успешно сохраняются в текстовый файл, однако диалоговое окно с сообщением ANR появляется случайным образом. Какая причина появления данного диалогового окна?

Ответ:

 (1) в очереди главного потока находятся множественные вызовы 

 (2) во время осуществления события приложение не отвечает в течение 3 секунд 

 (3) приемник исполняет операции более 10 секунд 

 (4) оператор "Сохранить" блокирует вызов I/O 

 (5) в результате действий UI создано большое количество потоков 


Номер 3
    
     // This method comes from an Activity class. 
     public void onClick(View v) { 
      new Thread(new Runnable () { 
       public void run() {
        Bitmap b = loadImageFromNetwork("http://example.com/image.png");
        mImageView.setImageBitmap(b); 
       }
       }).start(); 
     }    
    
    Почему код не осуществляет ожидаемых действий?
   

Ответ:

 (1) конструктор Thread не допускает Runnable в качестве аргумента 

 (2) вместо loadImageFromNetwork() должно быть threadLoadFromNetwork() 

 (3) mImageView не доступно внутри метода run() 

 (4) инструменты UI доступны за пределами потока UI 

 (5) аргумент View v в onClick() должен быть конечным 


Упражнение 17:
Номер 1
    
LocationManager manager =
(LocationManager)getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_LOW);
String provider = manager.getBestProvider(criteria, false);
Location location = locationManager.getLastKnownLocation(provider);    
    
    Чтобы убедиться, что точность расположения менее, чем 100 метров, нужно:
   

Ответ:

 (1) вызвать метод enhancedAccuracy(true) в объекте Location 

 (2) использовать ACCURACY_FINE вместо ACCURACY_LOW 

 (3) вызвать getHighAccuracyLocation() вместо getLastKnownLocation() 

 (4) передать Context.LOCATION_SERVICE_ACCURATE в метод getSystemService() 

 (5) передать ИСТИНА в качестве значения конструктора Criteria 


Номер 2
Что НЕ может делать приемник?

Ответ:

 (1) запускать службы или отправлять транслируемые сообщения 

 (2) использовать внешние ресурсы или внешние устройства 

 (3) создавать уведомления и выводить ошибки в строке состояния 

 (4) использовать JNI (Java Native Interface) или SQLite 

 (5) показывать диалог или присоединяться к службе 


Номер 3
    
public class MyPhoneReceiver extends BroadcastReceiver {

  @Override
  public void onReceive(Context context, Intent intent) { 
 Bundle extras = intent.getExtras(); 
 if (extras != null) {
   String state = extras.getString(TelephonyManager.EXTRA_STATE);
   if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) { 
   // INSERT CODE HERE 
   Log.w("DEBUG", phoneNumber); 
   }
 }
}    
    
    Нужно сохранить входящие телефонные номера. Какая строка кода должна быть на месте комментария?
   

Ответ:

 (1) String phoneNumber = (String)extras.getValue(TelephonyManager.EXTRA_INCOMING_NUMBER); 

 (2) String phoneNumber = extras.getString(TelephonyManager.INCOMING_PHONENUMBER); 

 (3) PhoneNumber phoneNumber = extras.getString(TelephonyManager.EXTRA_INCOMING_NUMBER); 

 (4) String phoneNumber = extras.getString(TelephonyManager.INCOMING_NUMBER); 

 (5) String phoneNumber = extras.getString(TelephonyManager.EXTRA_INCOMING_NUMBER);  


Упражнение 18:
Номер 1
Действие в приложении запускается, если указано полное имя класса в Intents, и не запускается во всех остальных случаях. Как неявно убедиться в том, что действие будет запущено?

Ответ:

 (1) добавить фильтр действия в файле AndroidManifest.xml 

 (2) добавить разрешение ACTIVITY_IMPLICITLY_LAUNCHABLE в файл AndroidManifest.xml 

 (3) убедиться, что действие является расширением класса LaunchableActivity 

 (4) вызвать setLaunchable(true) в методе действия onCreate() 

 (5) передать ключевое значение "implicitLaunch:true" в Intent, используя запущенное действие 


Номер 2
    
     Intent i = new Intent(Intent.ACTION_VIEW); 
     Bundle b = new Bundle(); 
     b.putString("EMAIL", "abc@xyz.com");
    
    Как, присоединив Bundle к Intent, к Intent можно передать следующее действие? Какая строка кода описывает эту возможность?

Ответ:

 (1) i.putBundle(b); 

 (2) i.addExtra(b); 

 (3) i.addData(b); 

 (4) i.passBundle(b); 

 (5) i.putExtras(b); 


Номер 3
Необходимо отправить Intent так, чтобы оно продолжало существовать после передачи сообщения об успешном завершении. Данные должны быть доступны. Какой тип Intent должен быть использован?

Ответ:

 (1) Long-lived 

 (2) Sticky 

 (3) Accessible 

 (4) Persistent 

 (5) Cohesive 


Номер 4
Действие A запускает B, которое запускает C. Действие A работает вместо B, когда пользователь нажимает кнопку назад из действия C. Какой флаг может быть использован для проверки того, что A работает вместо B?

Ответ:

 (1) FLAG_ACTIVITY_NO_HISTORY 

 (2) FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS 

 (3) FLAG_ACTIVITY_SKIP 

 (4) FLAG_ACTIVITY_IGNORE 

 (5) FLAG_ACTIVITY_NO_BACK 


Номер 5
Категории используются для:

Ответ:

 (1) описания типов обрабатываемых компонентов 

 (2) именования структур, к которым принадлежит действие 

 (3) создания описаний, доступных пользователю 

 (4) для того, чтобы назначать разрешения группам фильтров 

 (5) для того, чтобы указывать опции, которые будут доступны в контекстном меню 


Упражнение 19:
Номер 1
    
     Intent intent = new Intent(Intent.ACTION_VIEW); 
     Uri u = Uri.parse("http://www.google.com"); 
     intent.setData(u);
    
    Какой код нужно добавить, чтобы запустить браузер и отобразить страницу www.google.com?

Ответ:

 (1) new Activity(intent); 

 (2) launchActivity(intent); 

 (3) startBrowser(intent); 

 (4) navigateTo(intent); 

 (5) startActivity(intent); 


Номер 2
    
     // onCreate() method from your searchable Activity class
     @Override
     public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.search);
       Intent intent = getIntent();
       if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
      String query = intent.getStringExtra(SearchManager.QUERY); 
      doMySearch(query);
       } 
     }
    
    Как проверить, что действие запущено, когда пользователь выполняет поиск в виджете?

Ответ:

 (1) добавить к классу поле public static boolean SEARCH_ENABLED со значением ИСТИНА 

 (2) вызвать makeSearchable() после вызова setContentView() 

 (3) убедиться, что класс является производным от класса SearchableActivity 

 (4) сконфигурировать действие, которое будет обрабатывать ACTION_SEARCH 

 (5) обозначить класс действий в файле searchable.xml 


Номер 3
При попытке вставки данных с клавиатуры, создаются объекты ClipData, запрашивающие:

Ответ:

 (1) cluster identifier 

 (2) MIME type 

 (3) class hierarchy 

 (4) bytestream 

 (5) intent 


Номер 4
Необходимо добавить поисковый интерфейс в приложение. Android должен контролировать все события, связанные с поиском. Также интерфейс должен включаться во все действия, которые вызывают его. Какой интерфейс нужно использовать для поиска?

Ответ:

 (1) dialog 

 (2) widget 

 (3) activity 

 (4) view 

 (5) provider 


Упражнение 20:
Номер 1
    
     <LinearLayout android:orientation="vertical">
       <Button android:id="@+id/Button1" /> 
       <Button android:id="@+id/Button2" />
     </LinearLayout>    
    
    Пример кода взят из макета XML файла. Необходимо убедиться, что Button 1 будет находиться в фокусе, после того как пользователь сместит курсор ниже Button 2. Какую конструкцию вы бы добавили?
   

Ответ:

 (1) android:nextFocus="previousView" к конфигурации Button2 

 (2) android:nextFocusDown="@+id/Button1" к конфигурации Button2 

 (3) android:nextFocusTop="@+id/Button2" к конфигурации Button1 

 (4) android:nextFocusDown="@+id/Button1" к конфигурации Button1 

 (5) android:nextFocusTop="@+id/Button1" к конфигурации Button2 


Номер 2
Вы устанавливаете меню в приложение. Вы создали XML файл mainMenu.xml и разместили его в папке assets/menu. Когда вы попытаетесь создать меню, используя getMenuInflater().inflate(R.menu.mainMenu, viewGroup), меню не создается. Какое действие должно быть предпринято для устранения данной проблемы?

Ответ:

 (1) нужно вручную отредактировать R.java, чтобы добавить ссылку на XML file 

 (2) нужно использовать inflateFromFile() вместо inflate() 

 (3) нужно передать значение ИСТИНА в качестве второго аргумента метода inflate() 

 (4) нужно переместить mainMenu.xml в папку res/menu 

 (5) нужно использовать класс MenuFileInflater вместо MenuInflater 


Номер 3
Приложение разработано для устройств, поддерживающих французский язык. Файл с соответствующими настройками хранится по адресу res/values-fr-rFR/strings.xml. На одном из экранов приложения метка текстового поля отображается на английском языке. Почему метка текстового поля не отображается на французском?

Ответ:

 (1) файл с настройками французского языка strings.xml имеет неверный формат XML 

 (2) код, определяющий версию метки, некорректно указывает в качестве источника данных французскую версию файла strings.xml 

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

 (4) в файле с настройками французского языка strings.xml пропущена строка, поэтому значение берется из файла, определенного по умолчанию 

 (5) файл с настройками французского языка strings.xml должен быть расположен по адресу res/values-fr-FR instead or res/values-fr-rFR 


Номер 4
Создается пользовательский интерфейс. Необходимо использовать макет, который позволит указывать отношения между элементами предками и потомками. Какой макет необходимо использовать?

Ответ:

 (1) TableLayout 

 (2) FrameLayout 

 (3) AbsoluteLayout 

 (4) LinearLayout 

 (5) RelativeLayout 


Номер 5
NinePatchDrawable – это растровое изображение, которое

Ответ:

 (1) создано с помощью draw9patch и имеет статичный размер 

 (2) масштабируемо и ограничено 64 цветами 

 (3) сжато и сохранено в файле формата .9pt 

 (4) масштабируемо и служит фоном для View 

 (5) создано из 9 отдельных файлов и используется для анимации 


Упражнение 21:
Номер 1
Для того чтобы включать в приложение статические файлы и обращаться к ним во время работы программы, необходимо:

Ответ:

 (1) расположить в папке res/data и открывать с помощью openResource(R.raw("<filename>")) 

 (2) закодировать в формате base64 и расположить в папке res/data 

 (3) сохранить в проекте и открыть с помощью openStream("<path_and_filename>") 

 (4) использовать инструмент datafile, чтобы закодировать в файл Java 

 (5) расположить в папке res/raw и открывать с помощью openRawResource(R.raw.<filename>) 


Номер 2
Синтаксис android:id="@+id/foo" – это XML-макет используемый для:

Ответ:

 (1) ссылки на различные типы ресурсов, автоматически генерируемых SDK 

 (2) информирования разработчика пользовательского интерфейса о том, что в проект могут быть импортированы именованные ресурсы 

 (3) автоматического добавления имен новых ресурсов в R.java 

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

 (5) ссылки на ресурс, который является внешним по отношению к проекту в системе управления исходным кодом 


Номер 3
Вы работаете с главным действием приложения. Требуется, чтобы действие, запускаемое после главного, было не во весь экран. Как этого добиться?

Ответ:

 (1) для запуска второго действия вызвать метод startActivityAsDialog() 

 (2) установить для второго действия android:theme="@android:style/Theme.Dialog" 

 (3) установить флаг ACTION_LAUNCH_DIALOG для запуска второго действия 

 (4) передать значение ИСТИНА в качестве второго аргумента конструктора Intent 

 (5) убедиться, что для поля второго действия параметр AS_DIALOG установлено значение ИСТИНА 


Номер 4
    
     public class MyCustomViewView extends View {
      private Paint mTextPaint;
      private String mText;
      private int mAscent;
     
      public MyCustomViewView(Context context, AttributeSet attrs) { 
       super(context, attrs);
       mTextPaint = new Paint();
       mTextPaint.setAntiAlias(true); 
       mTextPaint.setTextSize(
         16 * getResources().getDisplayMetrics().density
       );
       mTextPaint.setColor(0xFF000000);
       setPadding(3, 3, 3, 3);
       mAscent = (int) mTextPaint.ascent();
       TypedArray a = context.obtainStyledAttributes(
         attrs, R.styleable.MyCustomViewView
       );
       CharSequence s = a.getString (R.styleable.text);
       this.mText = s.toString();
       invalidate();
       requestLayout();
       a.recycle(); 
       }
       
       @Override
      protected void onDraw(Canvas canvas) { 
       super.onDraw(canvas);
       canvas.drawText(
         mText, getPaddingLeft(), getPaddingTop() - mAscent, mTextPaint
       ); 
      }
     }    
    
    Какого размера будет изображение?
   

Ответ:

 (1) 100x100 

 (2) 200x200 

 (3) исходная ширина x исходную высоту 

 (4) ширина экрана x высоту экрана 

 (5) 50x50 


Упражнение 22:
Номер 1
Какие четыре типа диалоговых окон есть в Android?

Ответ:

 (1) Message, Progress, DatePicker, TimePicker 

 (2) TextInput, Feedback, DataPicker, Toaster 

 (3) Alert, Progress, DatePicker, TimePicker 

 (4) Feedback, Progress, DateTimePicker, Input 

 (5) Immediate, Deferred, DataReciever, Progress 


Номер 2
    
     Context context = getApplicationContext{);
     CharSequence text = "Data operation is complete";
     int duration = Toast.LENGTH_SHORT;
     Toast toast = Toast makeText(context, text, duration);
     // INSERT CODE HERE
     toast.show();    
    
    Какая строка кода должна быть на месте комментария, чтобы разместить всплывающее окно Toast в верхнем левом углу экрана?
   

Ответ:

 (1) toast.setPosition(0, 0); 

 (2) toast.setGravity(Gravity.TOP | Gravity.LEFT, 0, 0);  

 (3) toast.setPosition(Gravity.NONE, 0, 0); 

 (4) toast.setPosition(Toast.TOP, Toast.LEFT); 

 (5) toast.setGravity(-1, Toast.TOP, Toast.LEFT); 


Номер 3
    
     <?xml version="1.0" encoding="utf-8"?>
     <transition
      xmlns:android="http://schemas.android.com/apk/res/android" > 
      <item android:drawable="@drawable/myLogo1" />
      <item android:drawable="@drawable/myLogo2" />
     </transition>    
    
    Перемещение за 1 секунду в коде класса View осуществляется с помощью:
   

Ответ:

 (1) ((TransitionDrawable)this.getBackground()).executeTransition(1000); 

 (2) ((TransitionDrawable)this.getBackground()).initiateTransition(1); 

 (3) ((TransitionDrawable)this.getTransition()).start(1); 

 (4) ((TransitionDrawable)this.getBackground()).startTransition(1000); 

 (5) ((TransitionDrawable)this.getTransition()).run(1000); 


Номер 4
К стилям и темам, предлагаемым платформой Android, можно получить доступ через:

Ответ:

 (1) R.styleThemes 

 (2) R.android.style_themes 

 (3) android.R.style 

 (4) android.style_themes 

 (5) android/stlThm 


Упражнение 23:
Номер 1
В проект импортированы файлы, которые размещены в папке /assets. Однако приложению нельзя ссылаться на данные файлы, используя сгенерированный файл R.java. Файлы можно сделать доступными приложению, если:

Ответ:

 (1) обновить свойства проекта, установив dataFiles=true 

 (2) отредактировать R.java и заставить файл ссылаться на себя 

 (3) написать код, разрешающий доступ к файлам напрямую 

 (4) запустить перепостроение в среде Eclipse 

 (5) переместить файлы в папку /bin 


Номер 2
String lc = context.getResources().getConfiguration().locale.getLanguage(); Что нужно заменить в коде, чтобы  можно было использовать язык стандарта ISO?

Ответ:

 (1) getLanguage() на getISO3Language() 

 (2) getConfiguration() на getISOConfiguration() 

 (3) locale на iso3Locale 

 (4) getResources() на getISO3Resources() 

 (5) getLanguage() на getISOLanguage() 


Номер 3
Какие макеты допускается использовать при разработке виджетов для рабочего стола?

Ответ:

 (1) FrameLayout, LinearLayout, и TableLayout 

 (2) AbsoluteLayout, LinearLayout, и TableLayout 

 (3) FrameLayout, LinearLayout, и RelativeLayout 

 (4) AbsoluteLayout, LinearLayout, и TableLayout 

 (5) RelativeLayout, FrameLayout, и BorderLayout 


Номер 4
    
     MyActivity.java 
     --------------- 
     package com.example.app; 
     
     import android.app.Activity; 
     import android.os.Bundle; 
     
     public class ExampleActivity extends Activity { 
     
      @Override 
      public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(new MyDrawView(this));     
      }
       
     } 
     
     MyDrawView.java 
     --------------- 
     package com.example.all; 
     
     import android.content.Context; 
     import android.graphics.Canvas; 
     import android.graphics.Color; 
     import android.graphics.Paint; 
     import android.view.View; 
     
     public class MyDrawView extends View { 
       
      public MyDrawView(Context context) { 
        super(context); 
      } 
       
      protected void onDrawView(Canvas canvas) { 
        Paint paint = new Paint(); 
        paint.setColor(Color.GREEN); 
        paint.setTextSize(25); 
        paint.setAntiAlias(true); 
        canvas.drawText("Hello World", 5, 30, paint); 
      }   
     
     } 
    
    Построение и развертывание приложения производятся правильно. Какие ошибки в коде приведут к тому, что текст НЕ будет отображаться полностью?
   

Ответ:

 (1) в методе setContentView() должна быть ссылка на значение из R.java 

 (2) в MyDrawView должен быть включен метод onDrawStart() 

 (3) MyDrawView должен быть расширением SurfaceView 

 (4) к super.onDraw(canvas) необходимо обращаться из onDrawView() 

 (5) вместо onDrawView() должно быть onDraw() 




Главная / Программирование / Разработка приложений для Android 4.0 / Тест 1