2015-03-14 1 views
0

Я новичок в программировании на Android, и я натолкнулся на этот код ниже.Есть ли эмпирическое правило в создании на Android?

public void email(View view){ 
    Intent intent = new Intent(this, NotificationActivity.class); 
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 
            0, intent, 0); 

    NotificationCompat.Builder builder = new NotificationCompat.Builder(
      getApplicationContext()) 
      .setTicker("NEW EMAIL!!!") 
      .setSmallIcon(android.R.drawable.ic_dialog_email) 
      .setAutoCancel(true) 
      .setContentText("This is a new E-mail!!!") 
      .setContentIntent(pendingIntent); 

    NotificationManager manager =(NotificationManager)getSystemService(
      Context.NOTIFICATION_SERVICE); 
    manager.notify(0, builder.build()); 

Он разозлил меня, чтобы увидеть, что создание экземпляра PendingIntent является:

PendingIntent.getActivity(etc.) 

и создание экземпляра NotificationManager является:

(NotificationManager)getSystemService(etc.) 

При создании экземпляра NotificationCompat.Builder является :

new NotificationCompat.Builder(getApplicationContext()) 

Как узнать, когда следует использовать слово «новый» или метод getSystemService() и так далее. Существует ли универсальное правило создания экземпляра, или я должен изучать его один за другим, для каждого класса?

Благодарим за помощь!

+0

Вы видели мой ответ? –

+0

Я правильно сделал эту маркировку с этим зеленым контрольным знаком? Или есть другой процесс? Я новичок на этом сайте. –

ответ

0

Многие из классов в Android рамки могут быть созданы с помощью new:

Fragment f = new Fragment(); 
LinearLayout l = new LinearLayout(); 
Intent i = new Intent(); 

Есть и другие классы, которые никогда не должны быть воплощенные программистом с использованием new. Activity - пример. Application - другой.

В примерах, которые вы указали, термин Builder является ссылкой на Builder Pattern. Класс PendingIntent имеет такие методы, как getActivity() и getService(), потому что он извлекает новый PendingIntent типа, указанного программистом, то есть Intent для Activity или Service.

С опытом, вы узнаете больше о том, когда следует использовать new, когда использовать Singleton и так далее. Это Java-соглашения, целью которых является повышение эффективности и повторное использование кода.

1

создания экземпляра PendingIntent является: (. И т.д.) PendingIntent.getActivity

То есть "получение экземпляра". getActivity() создает новый экземпляр, извлекает один из кеша и т. Д. До реализации PendingIntent.

создания экземпляра NotificationManager является: (NotificationManager) getSystemService

То есть "получение экземпляра" (и т.д.).. getSystemService() создает новый экземпляр, извлекает один из кеша и т. Д. До фактической реализации Context (а не общедоступной части Android SDK).

Есть универсальное правило instansiating

Нет, я не в курсе, что есть такое правило в любом языке программирования.

Это, как говорится, обычно, если вы не должны использовать конструктор, нет никакого публичного конструктора. Например, вы заметите, что there is no public constructor on PendingIntent и there is no public constructor on NotificationManager.

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