рдкрд░рд┐рдЪрдп
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреА рдХрд┐ рдПрдХ рдРрд╕реЗ рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдХреИрд╕реЗ рдмрддрд╛рдпрд╛ рдЬрд╛рдП рдЬреЛ рдкрд╣рд▓реЗ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рдерд╛, рдЗрд╕рдХреЗ рдореБрдЦреНрдп рдШрдЯрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рджрд┐рд▓рдЪрд╕реНрдкреА рджрд┐рдЦрд╛рдиреЗ рдФрд░ рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╕рдм рдХреБрдЫ рдЙрддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рдХрд┐ рдХрдИ рд▓реЛрдЧ рд╕реЛрдЪрддреЗ рд╣реИрдВред рдЗрд╕реА рд╕рдордп, рдЗрд╕реЗ 15 рдорд┐рдирдЯ рдореЗрдВ рдХрд░реЗрдВ рдФрд░ рдХреБрдЫ рдореВрд▓ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреЗ рдмрд┐рдирд╛, рдЬрд┐рд╕реЗ рд╣рд░ рдХреЛрдИ рдЕрдкрдиреЗ рд▓рд┐рдП рдкрдврд╝ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╕реНрдкрд╖реНрдЯ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд╛рдкрд╕ рдЖ рд╕рдХрддрд╛ рд╣реИред
рдЬрдм рдореИрдВрдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рддреЛ рдореИрдВ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдмрд╣реБрдд рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рд╣реБрдЖред рдореЗрд░реА "рд╕рд░рд▓ рдФрд░ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп" рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЙрдмрд╛рдК рдореЗрдВ рдмрджрд▓ рдЧрдИ, рдЬрд┐рд╕рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ рдПрдХ рд╡рд┐рд╢рд╛рд▓рддрд╛ рдХреЛ рд╕рдордЭрдиреЗ рдФрд░ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣рддрд╛рд╢ рдкреНрд░рдпрд╛рд╕ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдХрд╣рдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рдЗрд╕ рддрд░рд╣ рдХреА рдХрд╣рд╛рдиреА рдореЗрдВ рд░реБрдЪрд┐ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдЖрдкрдХреЗ рдЗрдВрдЯрд░рдХреЛрд▓реЗрдХреНрдЯрд░ рдХреЛ рдбрд░рд╛рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдЕрдкрдиреА рдЦреБрдж рдХреА рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИ, рднрд▓реЗ рд╣реА рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рдЖрдкрдХреА рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рдерд╛ред
рдпрд╣ рдХреЛрдИ рд░рд╣рд╕реНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд▓реЗрдЦ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрдерд╛ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реЛрдЧреА: рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдФрд░ рдЕрдиреНрдп рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХреЗрд╡рд▓ рджреГрд╢реНрдп рдЕрднреНрдпрд╛рд╕ рд╣реЛрдЧрд╛ред рдпрд╣реА рд╣реИ, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ - рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ - рд╣рдо рдЗрд╕ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рд╕рд░рд▓ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд╣реИ, рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЗ рднреА рдЫреЛрдЯреЗ рдФрд░ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИрдВ, рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рддреНрд╡рд░рд┐рдд рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреНрд▓рд╛рд╕рд┐рдХ рдПрдВрдбреНрд░реЙрдЗрдб рдЯреВрд▓ рдХрд╛ рдПрдХ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рд╡рд┐рд╕реНрддреГрдд рдЕрд╡рд▓реЛрдХрди рджреЗрддрд╛ рд╣реИ, рдФрд░ рдкрд╣рд▓рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрддреЗ рд╕рдордп, "рдореБрдЭреЗ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП" рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдмрдЬрд╛рдп, "рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рд╢реНрди" рдХреИрд╕реЗ рдореБрдЭреЗ рдШрдЯрдХ рдПрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП "ред рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рднреА рд╡рд┐рд╡рд░рдгреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ - рдЕрдЧрд░ рд╡рд╣ рдЪрд╛рд╣реЗред
рддреЛ рдЪрд▓рд┐рдП!
рдШрдЯрдХреЛрдВ рдХреЛ рд╕реАрдЦрдирд╛
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ, рдЗрд╕реЗ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ, рдФрд░ ... рдЕрднреА рдХреЗ рд▓рд┐рдП, рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдХрд┐ рдореЗрдирдПрдХреНрдЯрд┐рд╡рд┐рдЯреА рд╣рдорд╛рд░реЗ рд╕рд╛рдордиреЗ рдЦреБрд▓ рдЧрдИ рд╣реИред рд╕рд╡рд╛рд▓ "рдЖрдЦрд┐рд░ рдХреНрдпреЛрдВ рд╣реИ" рдЗрд╕рдХрд╛ рдЬрд╡рд╛рдм рдмрд╛рдж рдореЗрдВ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдХрд╣рд╛рдВ рд╕реЗ рдЖрддрд╛ рд╣реИ - main_activity.xml рд╕реЗ, рдЬрд╣рд╛рдВ рд╕рднреА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рддрддреНрд╡ рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рд╡реЗ LinearLayout рдореЗрдВ рддреИрдирд╛рдд рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣рд╛рдВ рд╕рд╡рд╛рд▓ рдЙрдардиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред
рдХреЛрдб рджреЗрдЦреЗрдВ<LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/textView" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Android Demo Application" /> <TextView android:id="@+id/textView3" android:layout_width="match_parent" android:layout_height="wrap_content" android:text=" 1" /> <Button android:id="@+id/buttonShowToast" android:layout_width="match_parent" android:layout_height="wrap_content" android:text=" Toast" /> ... </LinearLayout>
рд╕рд░рд▓ рдШрдЯрдХ
рдЯреЛрд╕реНрдЯ
рдЪрд┐рддреНрд░ рджреЗрдЦреЗрдВ рдЕрдм рдЖрдЗрдП MainActivity.java рдФрд░ рдЗрд╕рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдкрд╣рд▓реЗ рдмрдЯрди рдкрд░ рдЬрд╛рдПрдВ - "рд╢реЛ рдЯреЛрд╕реНрдЯ" (рдкреЙрдк-рдЕрдк рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди)ред
Main_activity.xml рдореЗрдВ рдмрдЯрди рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ рдФрд░ MainActivity.java рдореЗрдВ рдЗрд╕рдХреЗ OnClickListener рдкрд░ рдЬрд╛рдПрдВред
рдХреЛрдб рджреЗрдЦреЗрдВ Button btn = findViewById(R.id.buttonShowToast); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getApplicationContext(), "This is a Toast", Toast.LENGTH_LONG).show(); } });
рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдПрдХ рдкреЙрдк-рдЕрдк рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЛрдб рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ! рдорд╣рд╛рди, рд╣реИ рдирд╛?
рдПрдХ рдЕрдиреНрдп рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рд╕рд╣рднрд╛рдЧрд┐рддрд╛
рдЪрд┐рддреНрд░ рджреЗрдЦреЗрдВрдкрд╣рд▓реА рдЧрддрд┐рд╡рд┐рдзрд┐

рджреВрд╕рд░реА рдЧрддрд┐рд╡рд┐рдзрд┐

рдЕрдм рдЖрд╡реЗрджрди рдХреЗ рдореБрдЦреНрдп рдкреГрд╖реНрда рдХреЗ рдмрд╛рд╣рд░ рдХрд╣реАрдВ рдЬрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдРрд╕реЗ рдЕрдиреНрдп рдкреГрд╖реНрда рдкрд░! "рдЕрдиреНрдп рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рд╕рд╣рднрд╛рдЧрд┐рддрд╛" рдкрд░ рдЬрд╛рдПрдВ - рдФрд░ рд╣рдо рдЕрдиреНрдп рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рдЕрдиреНрдп рдЧрддрд┐рд╡рд┐рдзрд┐ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдПрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдЧрддрд┐рд╡рд┐рдзрд┐рдпрд╛рдБ рдЖрдкрд╕ рдореЗрдВ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХреИрд╕реЗ рдХрд░рддреА рд╣реИрдВ? рдпрд╣рд╛рдВ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрдВрддреНрд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ: рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдПрдХ рдирд┐рд░рдВрддрд░ рднрдВрдбрд╛рд░рдг - рд╕рд╛рдЭрд╛_рдкреНрд░рд╢реНрди, рд╕рд╛рде рд╣реА startActivityForResult / onActivityResult (рдореИрдВ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЗрд╕реЗ рд╕рдореНрдорд┐рд▓рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрджрд┐ рдЖрдк startActivityForResult рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЦреБрд▓реА рдЧрддрд┐рд╡рд┐рдзрд┐ рд╕реЗ рдПрдХ рдирдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рджреВрд╕рд░реА рдЧрддрд┐рд╡рд┐рдзрд┐ рдкреВрд░реА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рджред рдкрд╣рд▓реА рдЧрддрд┐рд╡рд┐рдзрд┐ рдореЗрдВ onActivityResult рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдпрд╣ рдЕрднреА рддрдХ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рддреЛ рдЪрд┐рдВрддрд┐рдд рди рд╣реЛрдВ)ред
рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ!
рд╕рд╛рдЭрд╛_рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдкреНрд░рд╡реЗрд╢:
рдХреЛрдб рджреЗрдЦреЗрдВ String valueToSave = "test"; SharedPreferences.Editor editor = getSharedPreferences("demoapp", MODE_PRIVATE).edit(); editor.putString("myValue", valueToSave); editor.apply();
рд╕рд╛рдЭрд╛_рдкреНрд░рдХрд╛рд░ рд╕реЗ рдкрдврд╝рдирд╛:
рдХреЛрдб рджреЗрдЦреЗрдВ SharedPreferences prefs = getSharedPreferences("demoapp", MODE_PRIVATE); String storedValue = prefs.getString("myValue", "NOT_FOUND");
OnActivityResult рдХреЗ рд╕рд╛рде рдПрдХ рдЙрджрд╛рд╣рд░рдг - рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрд░реЛрдд рдореЗрдВ рджреЗрдЦреЗрдВред
рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд╕рд╣реЗрдЬрдирд╛ рдФрд░ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛
рдЪрд┐рддреНрд░ рджреЗрдЦреЗрдВ рдЪреВрдВрдХрд┐ рд╣рдордиреЗ рд╕рд╛рдЭрд╛ рдХрд┐рдП рдЧрдП_рдкреНрд░рд╢реНрди рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдЪрд▓реЛ рдЙрдирдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВред рд╣рдо "рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд╕рд╣реЗрдЬрдирд╛ рдФрд░ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛" рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рд╣рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЦрд╛рддреЗ рдХреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдб рдХреЗ рд╕рд╛рде рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЙрдирдХрд╛ рдкреНрд░рдХрд╛рд░ рдХреЗрд╡рд▓ рдПрдХ рдЪрд░ рджреНрд╡рд╛рд░рд╛ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдПрдХ рд╕реНрд╡рд┐рдЪ)ред рд╣рдо рдЗрди рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЗ рдХрдВрдЯреЗрдВрдЯ рдХреЛ рд╢реЗрдпрд░реНрдб_рдкрд░реНрдлреНрд╕ рдореЗрдВ рд╕реЗрд╡ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рд░реАрд╕реНрдЯреЛрд░ рдХрд░реЗрдВрдЧреЗред рдЕрдм рддрдХ, рдПрдХ рдЕрд▓рдЧ рдмрдЯрди, рдирд╣реАрдВ onResume - рд╣рдо рдЕрднреА рддрдХ рдЙрди рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪреЗ рд╣реИрдВ!
рд╕рд╣реЗрдЬреЗрдВ:
рдХреЛрдб рджреЗрдЦреЗрдВ SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit(); EditText et = findViewById(R.id.editTextName); String name = et.getText().toString(); editor.putString("name", name); editor.apply();
рд╣рдо рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
рдХреЛрдб рджреЗрдЦреЗрдВ SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE); EditText et = findViewById(R.id.editTextName); et.setText(prefs.getString("name", "")); ...
рд╕рд░рд▓ рдореЗрдиреВ
рдЪрд┐рддреНрд░ рджреЗрдЦреЗрдВ рдЕрдЧрд▓рд╛ рднрд╛рдЧ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдореЗрдиреВ рд╣реИред рд╣рдо рдЗрд╕рд╕реЗ рд╕реАрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕рдореЗрдВ рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ - рдмрд╕ onCreateOptionsMenu рд╕реЗрдЯ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ my_menu.xml рд╕реЗ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рднрд░реЗрдВред
рдХреЛрдб рджреЗрдЦреЗрдВ @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.my_menu, menu); return true; }
рдкреЙрдкрдЕрдк рдореЗрдиреВ
рдЗрд╕рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж - рдПрдХ рдкреЙрдк-рдЕрдк рдореЗрдиреВ рдмрдЯрдиред рдпрд╣ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдореЛрд░реА рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдФрд░ рд╕рдмрдореЗрдирд╕ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде рднреА рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред
рдкреЙрдк-рдЕрдк рдореЗрдиреВ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдСрдбрд┐рдпреЛ рдкреНрд▓реЗрдпрд░
рдЪрд┐рддреНрд░ рджреЗрдЦреЗрдВ рдСрдбрд┐рдпреЛ рдкреНрд▓реЗрдпрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЗрд╕ рддрдереНрдп рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐ рд╕рдВрдЧреАрдд рдмрдЬрд╛рдиреЗ рдореЗрдВ рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдЖрдк рдореАрдбрд┐рдпрд╛ рдкреНрд▓реЗрдпрд░ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреБрдЫ рдХреЛ рдЪрд╛рд╣рдиреЗ рд╡рд╛рд▓реЗ рдХреЗ рдмрдВрдзрди рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡реЙрд▓реНрдпреВрдо рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ - рдХреБрдЫ рднреА рдЕрд▓реМрдХрд┐рдХ рдирд╣реАрдВ рд╣реИред рдмреЛрдирд╕ рдПрдХ рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдореАрдбрд┐рдпрд╛ рдкреНрд▓реЗрдпрд░ рдХреЗ рд╕рд╛рде рдЧрддрд┐рд╡рд┐рдзрд┐ рдЦреЛрд▓реЗрдВ, рдкреНрд▓реЗрдмреИрдХ рд╢реБрд░реВ рдХрд░реЗрдВ рдФрд░ "рдмреИрдХ" рдмрдЯрди рджрдмрд╛рдПрдВред рд╕рдВрдЧреАрдд рдЦреЗрд▓рдирд╛ рдЬрд╛рд░реА рд╣реИ, рдФрд░ рдЗрд╕реЗ рдЕрдм рд░реЛрдХрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ ... рд╕рдорд╕реНрдпрд╛! рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд░реЗрдВ - рд╣рдо рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рдкрддрд╛ рд▓рдЧрд╛рдПрдВрдЧреЗред
рдСрдбрд┐рдпреЛ рдкреНрд▓реЗрдпрд░ рдХрд╛ рдХреЛрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╡реЗрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░
рдЦреИрд░, рдкрд╣рд▓реЗ рднрд╛рдЧ рдХреЗ рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ, рд╣рдо рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХреБрдЫ рднреА рджрд┐рд╡реНрдп рдирд╣реАрдВ рд╣реИред
рдЪрд┐рддреНрд░ рджреЗрдЦреЗрдВ рдХреЛрдб рджреЗрдЦреЗрдВ WebView view = findViewById(R.id.webView); view.setWebViewClient(new WebViewClient()); view.getSettings().setJavaScriptEnabled(true); view.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); view.loadUrl("https://google.com");
рдЕрдЧрд▓рд╛ рднрд╛рдЧ рдкрд╣рд▓реЗ рд╕реЗ рдХрдард┐рди рд╣реИред
рд╕реЗрд╡рд╛рдПрдБ рдФрд░ рд╕реВрдЪрдирд╛рдПрдБ
BroadcastReceiver
рдЪрд┐рддреНрд░ рджреЗрдЦреЗрдВ рд╕реНрдорд░рдг рдХрд░реЗрдВ рдХрд┐ рд╣рдордиреЗ рдПрдХ рдЧрддрд┐рд╡рд┐рдзрд┐ рд╕реЗ рджреВрд╕рд░реА рдЧрддрд┐рд╡рд┐рдзрд┐ рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рдХреИрд╕реЗ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ред рдХрд┐рд╕реА рддрд░рд╣ (рд╣рдо рдЕрднреА рддрдХ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдкрддрд╛ рдЪрд▓рд╛) рдХрд┐ рдЬрдм рджреВрд╕рд░реА рдЧрддрд┐рд╡рд┐рдзрд┐ рдмрдВрдж рд╣реЛ рдЧрдИ рдереА, рддреЛ рдкрд░рд┐рдгрд╛рдо рдкрд╣рд▓реЗ onActivityResult рдореЗрдВ рдЙрдбрд╝ рдЧрдпрд╛ред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣рдо рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдореЗрдВ рдХрд╣реАрдВ рднреА рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рд╣рд╛рдВ, рд╣рдо рдПрдХ рд╢реНрд░реЛрддрд╛ рдХреА рдШреЛрд╖рдгрд╛ рдФрд░ рдкрдВрдЬреАрдХрд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдХрд╣реАрдВ рд╕реЗ рднреА рд╣рдореЗрдВ рд╕реБрдирддрд╛ рд╣реИред рдРрд╕реЗ рд╢реНрд░реЛрддрд╛ рдХреЛ рдмреНрд░реЙрдбрдХрд╛рд╕реНрдЯрд╕реАрд╡рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдХреЛрдб рджреЗрдЦреЗрдВ public BroadcastReceiver MyReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { Toast.makeText(getApplicationContext(), "Broadcast receiver: received!", Toast.LENGTH_LONG).show(); } };
рдпрд╣рд╛рдВ рдЖрдк рдмрд┐рдирд╛ рдЗрдВрдЯреЗрдВрдЯ рдХреЗ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдЖрджрд┐рдо рд╕реНрддрд░ рдкрд░: рдЕрднреА рдХреЗ рд▓рд┐рдП, рдпрд╣ рддрдереНрдп рдХрд┐ рд╡реЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВ, рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рд╛рдорд╛рдиреНрдп рдмрд╕ рдореЗрдВ рднреЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдПрдХ рдкреВрд░реНрд╡ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдмреНрд░реЙрдбрдХрд╛рд╕реНрдЯрд░ рд╣рдореЗрдВ рдЬрд╣рд╛рдВ рднреА рд╣реИрдВ, рд╣рдореЗрдВ рд╕реБрдиреЗрдВрдЧреЗред
рдХреЛрдб рджреЗрдЦреЗрдВ IntentFilter filter = new IntentFilter(); filter.addAction("MyCustomActionName"); registerReceiver(MyReceiver, filter); sendBroadcast(new Intent("MyCustomActionName"));
рдлрд┐рд▓рд╣рд╛рд▓, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдореВрд▓ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХрд┐ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рдХреНрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ: рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ, рдФрд░ рдЕрдм рдпрд╣ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рд╕рд░рд▓ рд╕реЗрд╡рд╛
рдЪрд┐рддреНрд░ рджреЗрдЦреЗрдВ рдирд┐рд░реНрдмрд╛рдз рд░реВрдк рд╕реЗ рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝реЗрдВ, рдЬрд╣рд╛рдВ рдмреНрд░реЙрдбрдХрд╛рд╕реНрдЯрд╕реАрд╡рд░ рдХреЛ рдЗрд╕рдХрд╛ рдкреВрд░рд╛ рдЖрд╡реЗрджрди рдорд┐рд▓реЗрдЧрд╛ред рдФрд░ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдпрд╣ рдмрддрд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХрд┐ рдПрдВрдбреНрд░реЙрдЗрдб рд╕реЗрд╡рд╛ рдХреНрдпрд╛ рд╣реИ, рдореИрдВ рддреБрд░рдВрдд рд╣реА рдкреНрд░рджрд░реНрд╢рди рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВред рд╕реЗрд╡рд╛ рдЪрд▓рд╛рдПрдВ, рдЬреЛ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдЕрдкрдирд╛ рдХрд╛рдо рд╢реБрд░реВ рдХрд░рддреА рд╣реИред рдЗрд╕рдХреЗ рд╕рд╛рде, рд╣рдо рджреЛ рд░рд┐рд╕реАрд╡рд░ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВрдЧреЗ: рдПрдХ рдЧрддрд┐рд╡рд┐рдзрд┐ рдореЗрдВ рдФрд░ рдПрдХ рд╕реЗрд╡рд╛ рдореЗрдВред
рд╕реЗрд╡рд╛ рдореЗрдВ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рдХреЛ рдпрд╣ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдмрд╛рд╡рдЬреВрдж, рд╣рдо рд╣рдореЗрд╢рд╛ рдЧрддрд┐рд╡рд┐рдзрд┐ рд╕реЗ рдЙрд╕ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред
рдХреЛрдб рджреЗрдЦреЗрдВ public BroadcastReceiver MyServiceReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { Toast.makeText(getApplicationContext(), "Toast from Service: I hear you!", Toast.LENGTH_LONG).show(); } };
рдЯреЗрдХреНрд╕реНрдЯ рд╡реНрдпреВ рдореЗрдВ рд╕реЗрд╡рд╛ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рд╕реАрд╡рд░ рдЗрди рдПрдХреНрдЯрд┐рд╡рд┐рдЯреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдХреЛрдб рджреЗрдЦреЗрдВ public BroadcastReceiver MyPrintReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { Toast.makeText(getApplicationContext(), "pong", Toast.LENGTH_SHORT).show(); TextView tv = findViewById(R.id.textViewSimpleServiceStatus); String msg = intent.getStringExtra("msg"); tv.setText(msg); } };
рдФрд░, рдкреВрд░реНрдг рд╕рдордЭ рдХреЗ рд▓рд┐рдП, рд╕реЗрд╡рд╛ рд╕реЗ рдЧрддрд┐рд╡рд┐рдзрд┐ рдкрд░ рд╕рдВрджреЗрд╢ рднреЗрдЬрддреЗ рд╕рдордп, рд╣рдо рдЯреЛрд╕реНрдЯ ("рдкрд┐рдВрдЧ") рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВрдЧреЗред рдФрд░ рдЬрдм рд╣рдо рдЧрддрд┐рд╡рд┐рдзрд┐ рдореЗрдВ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ TextView рдореЗрдВ рдореВрд▓реНрдп рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЯреЛрд╕реНрдЯ ("рдкреЛрдВрдЧ") рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВрдЧреЗред
рдмрддрд╛ рджреЗрдВ рдХрд┐ рд╕реЗрд╡рд╛ рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдЗрд╕ рддрд░рд╣ рдХреЗ "рдкрд┐рдВрдЧреНрд╕" рдХреЛ рдЧрддрд┐рд╡рд┐рдзрд┐ рдореЗрдВ рднреЗрдЬрдирд╛ рд╣реИ, рдФрд░ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХрд╛ рдХрд╛рд░реНрдп рдмрд╕ рдЙрдиреНрд╣реЗрдВ рдЗрд╕рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рд╣реИред
рдХреЛрдб рджреЗрдЦреЗрдВ Handler handler = new Handler(); runnable = new Runnable() { public void run() { if (running) { printMsg("Service is still running " + running); handler.postDelayed(runnable, 5000); // } else { printMsg("Service exited"); } } }; handler.postDelayed(runnable, 5000);
рд╣реИрдВрдбрд▓рд░ рдСрдкрд░реЗрд╢рди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрд╛рдж рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛, рдлрд┐рд▓рд╣рд╛рд▓ рдпрд╣ рд╣рд░ 5 рд╕реЗрдХрдВрдб рдореЗрдВ рдкрд┐рдВрдЧ рднреЗрдЬрдиреЗ рдХрд╛ рдПрдХ рд╕рд╛рдзрди рд╣реИред
рдФрд░ рдЕрдм, рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЯреЛрд╕реНрдЯ ("рд╕реЗрд╡рд╛ рдирд┐рд░реНрдорд┐рдд!") рджреЗрдЦрддреЗ рд╣реИрдВ рдФрд░ рдкрд┐рдВрдЧ-рдкреЛрдВрдЧ рд╕реВрдЪрдирд╛рдПрдВ рднреЗрдЬрддреЗ рд╣реИрдВред рдФрд░ TextView рдореЗрдВ рд╕реЗрд╡рд╛ рд╕реЗ рд╕рдВрджреЗрд╢ рдЖрдиреЗ рд▓рдЧреЗред
рдорд╣рд╛рди, рдкреГрд╖реНрдарднреВрдорд┐ рдирд┐рд╖реНрдкрд╛рджрди рд╣рдордиреЗ рджреЗрдЦрд╛ред рдЕрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдмрдВрдж рдХрд░реЗрдВ! рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЗрдЦреЗрдВрдЧреЗ: рд╕реЗрд╡рд╛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛ рдЧрдИ рд╣реИ (рдЯреЛрд╕реНрдЯ ("рд╕реЗрд╡рд╛ рдирд┐рд░реНрдорд┐рдд!") рджрд┐рдЦрд╛рдИ рджреЗрдЧреА) рдФрд░ "рдкрд┐рдВрдЧ" рднреЗрдЬреЗрдВред рдЗрд╕реА рд╕рдордп, рдХреЛрдИ "рдЪрд┐рдордЯрд╛" рдирд╣реАрдВ рд╣реИ - рдЖрдЦрд┐рд░рдХрд╛рд░, рдХреЛрдИ рдФрд░ рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреА рд╣реИ! рдХреБрдЫ рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж, рдореЗрд░реЗ рд╕реНрдорд╛рд░реНрдЯрдлреЛрди рдкрд░ рдкрд┐рдВрдЧ рднреА рдмрдВрдж рд╣реЛ рдЧрдПред рд╕реЗрд╡рд╛ рдирд╖реНрдЯ рд╣реЛ рд░рд╣реА рд╣реИред рдКрд░реНрдЬрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЦреЛрд▓реЗрдВ, рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рди рдмрдВрдж рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рд╕реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░реЗрдВред рдЕрдм рд╕реЗрд╡рд╛ рдирд╖реНрдЯ рдирд╣реАрдВ рд╣реБрдИ рд╣реИ, рдФрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдмрдВрдж рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рднреА, рд╣рдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ "рдкрд┐рдВрдЧ" рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдпрд╣рд╛рдВ рдХреЛрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ, рдФрд░ рдРрд╕реА рд╕реЗрд╡рд╛ рдмрд╣реБрдд рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдирд╣реАрдВ рд░рд╣реЗрдЧреАред рдбреЗрд╡рд▓рдкрд░ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдпрд╣ рднрдпрд╛рдирдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдЗрдП рдЗрд╕реЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдЖрдВрдЦреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджреЗрдЦреЗрдВ: рдХреНрдпрд╛ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдХреЛрдИ рднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрддрдиреА рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдХрд╛рдо рдХрд░реЗ рдФрд░ рдПрдХ рдмреИрдЯрд░реА рдЦрд╛рдП? рд╢рд╛рдпрдж рд╣реАред рдлрд┐рд░ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ?
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдПрдВрдбреНрд░реЙрдЗрдб рдХреА рдПрдХ рдЕрдирд┐рд╡рд╛рд░реНрдп рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдЪреИрдирд▓ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдкрдХреЛ рди рдХреЗрд╡рд▓ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдлреЛрд░рдЧреНрд░рд╛рдЙрдВрдб рд╕реЗрд╡рд╛, рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдиреАрд▓реЗ рд░рдВрдЧ рд╕реЗ рдорд╛рд░реЗ рдЬрд╛рдиреЗ рдХреЗ рдЬреЛрдЦрд┐рдо рдХреЗ рдмрд┐рдирд╛ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧреАред
рд╣рдорд╛рд░реА рд╕реЗрд╡рд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ:
рдХреЛрдб рджреЗрдЦреЗрдВ String CHANNEL_ID = "my_channel_01"; NotificationChannel channel = new NotificationChannel(CHANNEL_ID, "Channel human readable title", NotificationManager.IMPORTANCE_DEFAULT); ((NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE)).createNotificationChannel(channel); Notification notification = new NotificationCompat.Builder(this, CHANNEL_ID) .setContentTitle("") .setContentText("").build(); startForeground(1, notification);
рдФрд░ рд╣рдо рдЗрд╕реЗ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рдПрдВрдЧреЗ:
рдХреЛрдб рджреЗрдЦреЗрдВ startForegroundService(new Intent(getApplicationContext(), TestServiceForeground.class));
рд╣рдо рдЕрдкрдиреЗ рдбреЗрдореЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░ рд▓реМрдЯреЗрдВрдЧреЗ, рдКрд░реНрдЬрд╛-рдмрдЪрдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдЙрдирдХреА рдореВрд▓ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд▓реМрдЯрд╛рдПрдВрдЧреЗред рдФрд░ рдЕрдм рд╣рдо рдЕрдЧреНрд░рднреВрдорд┐ рд╕реЗрд╡рд╛ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВрдЧреЗред рдЬрдм рд╕реЗрд╡рд╛ рдЪрд▓ рд░рд╣реА рд╣реЛ, рддрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдмрдВрдж рдХрд░рдХреЗ, рд╣рдо рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕реЗрд╡рд╛ рдЕрдм рдкреБрдирд░рд╛рд░рдВрдн рдирд╣реАрдВ рд╣реЛ рд░рд╣реА рд╣реИ рдФрд░ рдирд╖реНрдЯ рдирд╣реАрдВ рд╣реЛ рд░рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╕ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд╣реИ, рд╣рд░ 5 рд╕реЗрдХрдВрдб рдореЗрдВ рдЕрдкрдиреЗ "рдкрд┐рдВрдЧреНрд╕" рднреЗрдЬ рд░рд╣рд╛ рд╣реИред рдЗрд╕реА рд╕рдордп, рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдореЗрдВ рдПрдХ рд╕реВрдЪрдирд╛ рдЖрдЗрдХрди рд▓рдЯрдХрд╛ рд░рд╣реЗрдЧрд╛ред
рдЪрд┐рддреНрд░ рджреЗрдЦреЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрди рд╕реВрдЪрдирд╛рдУрдВ рдХреЛ рдпрджрд┐ рд╡рд╣ рдЪрд╛рд╣реЗ рддреЛ рдЫрд┐рдкрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдЪреИрдирд▓ рдмрдирд╛рддреЗ рд╕рдордп рдЖрдк рдЙрдиреНрд╣реЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдЫрд┐рдкрд╛ рдирд╣реАрдВ рд╕рдХрддреЗред
рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдмрдЯрди (рдУрд╡рд░рд▓реЗ)
рдЪрд┐рддреНрд░ рджреЗрдЦреЗрдВ рдпрд╣ рдЬрд╛рдирдирд╛ рдХрд┐ рдПрдХ рд╕реЗрд╡рд╛ рдХреНрдпрд╛ рд╣реИ, рдЖрдк рдЗрд╕рдХреЗ рд╕рд░рд▓рддрдо рдФрд░ рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдЙрдкрдпреЛрдЧ рдкрд░ рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ - рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдмрдЯрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ред рд╡рд░реНрддрдорд╛рди рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░, рдЖрдк рдУрд╡рд░рд▓реЗ рдХреЛ рдХреЗрд╡рд▓ рдЙрд╕реА рддрд░рд╣ рдЕрдзрд┐рдХрд╛рд░ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдШреЛрд╖рдгрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ "рд╕рднреА рд╡рд┐рдВрдбреЛ рдХреЗ рдКрдкрд░" рдЕрдиреБрдорддрд┐ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреВрдЫрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдлрд┐рд░ рд╣рдо рдбреНрд░рд╛ рдУрд╡рд░рд▓реЗ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╣рдореЗрдВ рдПрдХ рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдЖрдЗрдХрди рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкреАрдЫреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕реЗрд╡рд╛ рд╣реИ рдЬреЛ рдЙрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрдирддреА рд╣реИред
рд╕реВрдЪрдирд╛рдПрдВ рднреЗрдЬ рд░рд╣рд╛ рд╣реИ
рдЪрд┐рддреНрд░ рджреЗрдЦреЗрдВ рдПрдХ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛ рдЬреЛ рдЕрдзрд┐рдХрд╛рдВрд╢ рдПрдВрдбреНрд░реЙрдЗрдб рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдореЗрдВ рдХрд╛рдо рдЖрдПрдЧреА, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕реВрдЪрдирд╛рдПрдВ рднреЗрдЬ рд░рд╣реА рд╣реИред рдЖрдЗрдП рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рд╡рд░реНрддрдорд╛рди рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░), рд╣рдореЗрдВ рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдЪреИрдирд▓ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рд╣рд╛рдВ, рд╣рд╛рдВ, рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рдЖрдзреБрдирд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред
рдХреЛрдб рджреЗрдЦреЗрдВ private void createNotificationChannel() { try { CharSequence channelName = CHANNEL_ID; String channelDesc = "channelDesc"; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { int importance = NotificationManager.IMPORTANCE_LOW; NotificationChannel channel = new NotificationChannel(CHANNEL_ID, channelName, importance); channel.setDescription(channelDesc); NotificationManager notificationManager = getSystemService(NotificationManager.class); assert notificationManager != null; NotificationChannel currChannel = notificationManager.getNotificationChannel(CHANNEL_ID); if (currChannel == null) { notificationManager.createNotificationChannel(channel); Toast.makeText(getApplicationContext(), "channel created", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(getApplicationContext(), "channel exists", Toast.LENGTH_SHORT).show(); } } } catch (Exception e) { } }
рдареАрдХ рд╣реИ, рддреЛ рдЖрдк рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдЗрд╕реЗ рд╕реВрдЪрдирд╛рдПрдВ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред
рдХреЛрдб рджреЗрдЦреЗрдВ public void setNotify() { try { Intent snoozeIntent = new Intent("ActionFromNotify"); PendingIntent snoozePendingIntent = PendingIntent.getBroadcast(this, 0, snoozeIntent, 0); String title = "Start"; Intent intent = new Intent(this, MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); NotificationCompat.Action action = new NotificationCompat.Action.Builder(R.drawable.ic_launcher_background, title, snoozePendingIntent).build(); NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this, CHANNEL_ID) .setSmallIcon(R.drawable.ic_launcher_background) .setContentTitle("MyNotification") .setContentText("Text here") .setPriority(NotificationCompat.PRIORITY_LOW) .setContentIntent(null) .setOngoing(true) // .setSound(null) .addAction(action); NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this); int notificationId = (int) (System.currentTimeMillis() / 4); notificationManager.notify(notificationId, mBuilder.build()); } catch (Exception e) { Log.e("error", e.toString()); } }
рд╕реВрдЪрдирд╛рдПрдВ рднреЗрдЬрдиреЗ рдХреЗ рд╕рд╛рде рд╕реЗрд╡рд╛
рдЪрд┐рддреНрд░ рджреЗрдЦреЗрдВ рдЧрддрд┐рд╡рд┐рдзрд┐ рд╕реЗ рд╕реАрдзреЗ рд╕реВрдЪрдирд╛рдПрдВ рднреЗрдЬрдирд╛, рдЖрдк рджреЗрдЦрддреЗ рд╣реИрдВ, рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рдирд╣реАрдВ рд╣реИред рд╣рдо рдЕрднреА рднреА рдХреБрдЫ рдФрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдо рдЕрдм рддрдХ рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдЬрд╛рдирддреЗ рд╣реИрдВ? рдмрд╕ рд╕реЗрд╡рд╛рдПрдВ рд╣реИрдВред рддреЛ рдЪрд▓реЛ рдЬрд▓реНрджреА рдордд рдХрд░реЛ рдФрд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реЗрд╡рд╛ рдмрдирд╛рдУ (рдлреЙрд░рдПрдЧреНрд░рд╛рдЙрдВрдб рднреА рдирд╣реАрдВ - рд╕рд░рд▓рддрд╛ рдХреЗ рд▓рд┐рдП) рдЬреЛ рд╣рд░ 5 рд╕реЗрдХрдВрдб рдореЗрдВ рдПрдХ рдирдИ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рднреЗрдЬрддрд╛ рд╣реИред рд╕рд╣рдордд рд╣реВрдБ, рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдмрдЯрди рджреНрд╡рд╛рд░рд╛ рд╕реВрдЪрдирд╛рдПрдВ рднреЗрдЬрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреЗрд╣рддрд░ рдФрд░ рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рд╣реИред
рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЬрдЯрд┐рд▓ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдмрд╛рдж рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдард╣рд░рд╛рд╡ рдХреЗ рд░реВрдк рдореЗрдВ (рдпрджрд┐ рдЖрдк рдЙрдирд╕реЗ рдкрд╣рд▓реЗ рдХрднреА рдирд╣реАрдВ рдорд┐рд▓реЗ рд╣реИрдВ), рд╣рдо рдЪрд╛рд░ рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рд╣реИрдВред рдФрд░ рдлрд┐рд░ рд╣рдо рдЬрдЯрд┐рд▓ рд╕рд╛рдордЧреНрд░реА рдХреА рдУрд░ рдореБрдбрд╝рддреЗ рд╣реИрдВ - рдкреНрд░рд╡рд╛рд╣ рдХреЗ рд▓рд┐рдПред
рдЕрддрд┐рд░рд┐рдХреНрдд рдШрдЯрдХ
рдбреЗрдЯрд╛ рддрд╛рд▓рд┐рдХрд╛
рдЪрд┐рддреНрд░ рджреЗрдЦреЗрдВ рдбреЗрдЯрд╛ рдЯреЗрдмрд▓ рдХреЗ рд╕рд╛рде рдЕрдкрдирд╛ рдкреЙрдЬрд╝ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рдЕрдзреНрдпрдпрди рдкрд╛рдардХ рддрдХ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЯреИрдмреНрдб рд╡рд┐рдВрдбреЛ
рдЪрд┐рддреНрд░ рджреЗрдЦреЗрдВ рдЕрдЧрд▓рд╛ рдкрдбрд╝рд╛рд╡ рдПрдХ рд╡рд░реНрдЬрд┐рдд рдЦрд┐рдбрд╝рдХреА рд╣реИред рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЯреИрдм рд╡реНрдпреВ рдХреА рд╕рд╣рд╛рдпрддрд╛ рд╕реЗ, рдЖрдк рдПрдХ рд╕реНрдХреНрд░реАрди рдкрд░ рдХрдИ рдЧрддрд┐рд╡рд┐рдзрд┐рдпрд╛рдБ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдХреЛрдб рджреЗрдЦреЗрдВ public class TabsActivity extends TabActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.tabs_activity); // TabHost TabHost tabHost = getTabHost(); TabHost.TabSpec tabSpec; tabSpec = tabHost.newTabSpec("tag1"); tabSpec.setIndicator(""); tabSpec.setContent(new Intent(this, SaveRestorePrefsActivity.class)); tabHost.addTab(tabSpec); tabSpec = tabHost.newTabSpec("tag2"); tabSpec.setIndicator(""); tabSpec.setContent(new Intent(this, FloatingMenuActivity.class)); tabHost.addTab(tabSpec); ... } }
рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕рдВрд░рдЪрдирд╛ рдХреА рд╡рд╕реНрддреБрдПрдБ: рдЯреБрдХрдбрд╝реЗ рдФрд░ рдореЗрдЬ
рд╕рдВрд░рдЪрдирд╛ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдЯреБрдХрдбрд╝реЛрдВ рдФрд░ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЯреБрдХрдбрд╝реЛрдВ рд╕реЗ рднрд░рдирд╛ рджрд┐рдЦрддрд╛ рд╣реИ
рдЪрд┐рддреНрд░ рджреЗрдЦреЗрдВ рдФрд░ рдЗрд╕рд▓рд┐рдП рддрд╛рд▓рд┐рдХрд╛
рдЪрд┐рддреНрд░ рджреЗрдЦреЗрдВ рдЧрддрд┐рд╡рд┐рдзрд┐ рдЬреАрд╡рди рдЪрдХреНрд░
рдЪрд┐рддреНрд░ рджреЗрдЦреЗрдВ рдзреАрд░реЗ-рдзреАрд░реЗ рдЕрдкрдиреЗ рдард╣рд░рд╛рд╡ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рдЬреАрд╡рди рдЪрдХреНрд░ рдкрд░ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ рдХрд┐ рдСрдирдХреНрд░рд┐рдПрдЯ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдФрд░ рднреА рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВред рдХреЛрдб рдФрд░ рдкреЙрдк-рдЕрдк рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЯреБрдХрдбрд╝рд╛ рдЙрдиреНрд╣реЗрдВ рдХрд┐рд╕реА рднреА рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рд╕реЗ рдмреЗрд╣рддрд░ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред
рдХреЛрдб рджреЗрдЦреЗрдВ @Override protected void onResume() { super.onResume(); Toast.makeText(getApplicationContext(), "onResume - ", Toast.LENGTH_SHORT).show(); } @Override protected void onDestroy() { super.onDestroy(); Toast.makeText(getApplicationContext(), "onDestroy - ", Toast.LENGTH_SHORT).show(); } @Override protected void onPause() { super.onPause(); Toast.makeText(getApplicationContext(), "onPause - ", Toast.LENGTH_SHORT).show(); }
рд╡рд╣реА OnTouchListener'ov, рдФрд░ onTextChanged рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред
рдХреЛрдб рджреЗрдЦреЗрдВ CheckBox cb = findViewById(R.id.checkBoxChangeExample); cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { printMsg("CheckBox - OnCheckedChangeListener: new value is checked = " + isChecked); } }); SeekBar seekBar = (SeekBar) findViewById(R.id.seekBarChangeExample); seekBar.setMax(100); seekBar.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { Integer progress = ((SeekBar)v).getProgress(); printMsg("SeekBar - OnTouchListener: new value is = " + progress.toString()); return false; } });
рд╡рд┐рд▓рдВрдмрд┐рдд, рд╕рдорд╛рдирд╛рдВрддрд░ рдФрд░ рдирд┐рдпрдорд┐рдд рдирд┐рд╖реНрдкрд╛рджрди
рд╣рдо рдХрд╣рд╛рдиреА рдХреЗ рд╕рдмрд╕реЗ рдХрдард┐рди рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддреЗ рд╣реИрдВ - рдЖрд╕реНрдердЧрд┐рдд рдФрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рдирд┐рд╖реНрдкрд╛рджрдиред
рд╡рд┐рд▓рдВрдмрд┐рдд рдирд┐рд╖реНрдкрд╛рджрди: рд╣реИрдВрдбрд▓рд░
рдЪрд┐рддреНрд░ рджреЗрдЦреЗрдВ рдЪрд▓реЛ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд╕рд╛рде рдЧреЛрддрд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рд╕рднреА рд╡рд┐рд╡рд░рдгреЛрдВ рдореЗрдВ рдПрдХ рд╣реИрдВрдбрд▓рд░ рдХреНрдпрд╛ рд╣реИ - рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдмрд╛рдж рдореЗрдВ рдЗрд╕реЗ рдЦреБрдж рдкрдврд╝реЗрдЧрд╛, рд╣рдо рдЙрд╕реЗ рдЗрд╕ рдЖрдирдВрдж рд╕реЗ рд╡рдВрдЪрд┐рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рд▓реЗрдХрд┐рди, рдЪреВрдВрдХрд┐ рд╣рдо рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЦреНрдп рдмрд╛рдд рдЬрд╛рдирдирд╛ рдЬрд░реВрд░реА рд╣реИ - рдХрд┐ рдпрд╣ рдЖрдкрдХреЛ рдПрдХ рд▓рдВрдмрд┐рдд рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
рдЗрд╕реЗ рджрд┐рдЦрд╛рдУред рдЖрдЗрдП рдПрдХ рд╣реИрдВрдбрд▓рд░ рдмрдирд╛рдПрдВ, рдЗрд╕рдореЗрдВ "Toast рдХреЛ 5 рд╕реЗрдХрдВрдб рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдЬреЛрдбрд╝реЗрдВред рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЯреЛрд╕реНрдЯ рд╡рд╛рдкрд╕ рд▓реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдХреЛрдИ рднреА рдиреАрдВрдж (рдкреВрд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдореЗрдВ рдард╣рд░рд╛рд╡) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереАред
рдХреЛрдб рджреЗрдЦреЗрдВ Handler handler = new Handler(); Runnable r = new Runnable() { public void run() { Toast.makeText(getApplicationContext(), "Delayed task executed", Toast.LENGTH_SHORT).show(); } }; handler.postDelayed(r, 5000);
рдЕрдм рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рдПрдХ рдЪрдХреНрд░реАрдп рдХрд╛рд░реНрдп рдЬреЛрдбрд╝реЗрдВ:
рдХреЛрдб рджреЗрдЦреЗрдВ Runnable r = new Runnable() { public void run() { Toast.makeText(getApplicationContext(), "Delayed task executed", Toast.LENGTH_SHORT).show(); handler.postDelayed(this, 5000); // } }; handler.postDelayed(r, 5000);
рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐ рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ 5 рд╕реЗрдХрдВрдб рдЪрд▓рддрд╛ рд╣реИ, рд╣реИрдВрдбрд▓рд░ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░реЗрдВ
рдХреЛрдб рджреЗрдЦреЗрдВ handler.removeCallbacksAndMessages(null);
рдпрд╣ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдмрд╛рдХреА рд╣реИ рдХрд┐ рд╣реИрдВрдбрд▓рд░ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕реЗ рджрд┐рдЦрд╛рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреБрдЫ рднрд╛рд░реА рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЬреИрд╕реЗ ... рдиреАрдВрдж рдХреЗ рдмрд┐рдирд╛ (рд╕рдЪ)! рджрд╕ рд╕реЗрдХрдВрдб, рддрд╛рдХрд┐ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЖрд╡реЗрджрди рдХреЛ рдорд╛рд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред
рдХреЛрдб рджреЗрдЦреЗрдВ Runnable r = new Runnable() { public void run() { long initTime = System.currentTimeMillis(); boolean timeElapsed = false; while(!timeElapsed){ if(System.currentTimeMillis() - initTime > 10000 ){ timeElapsed = true; // , ! ( , ). sleep } } } }; Toast.makeText(getApplicationContext(), "Hard Delayed task started", Toast.LENGTH_SHORT).show(); handler.postDelayed(r, 100);
рдРрд╕реЗ рдХрд╛рд░реНрдп рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрди 10 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдХреНрд▓рд┐рдХреЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ - рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рдорд╛рд░реЗ рдЬрдЯрд┐рд▓ рдЪрдХреНрд░ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╡реНрдпрд╕реНрдд рд╣реИред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдмрд╛рдж рджреВрд╕рд░рд╛ рдирд┐рд╖реНрдХрд░реНрд╖ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдереНрд░реЗрдб рдореЗрдВ рд╕рдВрд╕рд╛рдзрди-рдЧрд╣рди рдХрд╛рд░реНрдп рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдпреВрдЖрдИ рдзрд╛рдЧрд╛ рд╣рдореЗрд╢рд╛ рдореБрдХреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ рдмрд╛рд╣рд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред UI рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдХреБрдЫ рд╕рдВрдЪрд╛рд▓рди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд╖рд┐рджреНрдз рд╣реИрдВ: рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдВрдбреНрд░реЙрдЗрдб рдпреВрдЖрдИ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдЗрдВрдЯрд░рдиреЗрдЯ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХреНрд░реИрд╢ рдХрд░ рджреЗрдЧрд╛ред
рд╕рдорд╡рд░реНрддреА рдирд┐рд╖реНрдкрд╛рджрди: рд╕реНрдЯреНрд░реАрдо
рдЪрд┐рддреНрд░ рджреЗрдЦреЗрдВ рддрд╛рд░реНрдХрд┐рдХ рд╕рд╡рд╛рд▓ рдЕрдм рдпрд╣ рд╣реИ рдХрд┐ рдирдП рдзрд╛рдЧреЗ рдХреИрд╕реЗ рдмрдирд╛рдПрдВ рдФрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдВ?
рд╣рдо рдзрд╛рд░рд╛ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдФрд░ рдЗрд╕рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рддрдереНрдп рджреЛрдиреЛрдВ рдХреЛ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВред рдЪрд▓реЛ рдПрдХ рд╕реНрдЯреНрд░реАрдо рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЙрд╕реА рдХрд╛рд░реНрдп рдХреЗ рд╕рд╛рде рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг, рд╣реЗрдмрд▓рд░ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ 10 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдХреНрд░рд┐рдп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдХреЛрдб рджреЗрдЦреЗрдВ Thread thread = new Thread() { @Override public void run() { try { sendMsgUsingBroadcast("Thread started"); long initTime = System.currentTimeMillis(); boolean timeElapsed = false; while(!timeElapsed){ if(System.currentTimeMillis() - initTime > 10000 ){ timeElapsed = true; } } sendMsgUsingBroadcast("Thread stopped"); } catch (Exception e) { sendMsgUsingBroadcast("Thread error " + e.toString()); } } }; thread.start();
рдмрдирд╛рдпрд╛ рдЧрдпрд╛, рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ - рдФрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ! рдзрд╛рдЧреЗ рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред
рдЕрдЧрд▓рд╛ рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдХреИрд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдпрд╣ рд╕рдордЭрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдПрдХ рдзрд╛рдЧрд╛ рдХреЗрд╡рд▓ рддрднреА рдкреВрд░рд╛ рд╣реЛрдЧрд╛ рдЬрдм рдЗрд╕рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрдк рдХреЗрд╡рд▓ рд╕реНрдЯреНрд░реАрдо рдирд╣реАрдВ рд▓реЗ рд╕рдХрддреЗ рдФрд░ рдорд╛рд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рд╢реЗрдпрд░реНрд╕ рдФрд░ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд▓рд┐рдП рд╡реИрд░рд┐рдПрдмрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ: рд╕реНрдЯреНрд░реАрдо рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рд╕рд╛рде рд░рдирд┐рдВрдЧ = рдЯреНрд░реВ рдЪрд░ рдХреЛ рд╕реЗрдЯ рдХрд░реЗрдВред рдЗрд╕рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдореЗрдВ, рдереНрд░реЗрдб рдпрд╣ рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИ == рд╕рдЪ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдЗрд╕рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдкреВрд░рд╛ рд╣реЛрддрд╛ рд╣реИред
рдХреЛрдб рджреЗрдЦреЗрдВ Thread thread = new Thread() { @Override public void run() { try { sendMsgUsingBroadcast("Thread started"); SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE); while (true) { if (!prefs.getBoolean("running", false)) { break; } else { try { Thread.sleep(100); } catch (Exception e) {} } } sendMsgUsingBroadcast("Thread stopped"); } catch (Exception e) { sendMsgUsingBroadcast("Thread error " + e.toString()); } } }; thread.start();
рдЗрд╕рд▓рд┐рдП, рд╣рдо рдХреБрдЫ рдХрджрдо рдЖрдЧреЗ рдмрдврд╝реЗ рд╣реИрдВ рдФрд░ рдЕрдм рд╣рдо рди рдХреЗрд╡рд▓ рд╕реЗрд╡рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рд╣реИрдВрдбрд▓рд░ рдФрд░ рд╕реНрдЯреНрд░реАрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдЬрд╛рдирддреЗ рд╣реИрдВред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпреЗ рдЙрдкрдХрд░рдг рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдирд┐рдпрдорд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рд▓реЗрдХрд┐рди рдЙрдирдХреЗ рдкрд╛рд╕ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ: рдЙрдирдореЗрдВ рд╕реЗ рд╕рднреА рдЗрд╕ рддрдереНрдп рд╕реЗ рдПрдХрдЬреБрдЯ рд╣реИрдВ рдХрд┐ рд╣рдо рдПрдХ рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдг рдирд╣реАрдВ рдЦреЛрддреЗ рд╣реИрдВ, рдФрд░ рд╣рдореЗрд╢рд╛ рдХрд┐рд╕реА рди рдХрд┐рд╕реА рддрд░рд╣ рдХреЗ рдЕрдВрддрд╣реАрди рдЪрдХреНрд░ рдореЗрдВ рд░рд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдЬреНрдпрд╛рджрд╛рддрд░ рд╕рдордп рд╕реЛрддрд╛ рд╣реИ рдФрд░ рдХрднреА-рдХрднреА рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдарддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХреБрдЫ рд╢рд░реНрддреЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП - рдХрдЯреМрддреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЛрдЯрд┐рд╕ рдпрд╛ рд▓рдВрдмреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рд╕реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рд╕рд┐рд░рджрд░реНрдж рдЬреЛрдбрд╝рддрд╛ рд╣реИ: рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдорд╛рд░реА рд╕реЗрд╡рд╛ рдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмреИрдЯрд░реА рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ рдХреЛ рдорд╛рд░рддрд╛ рд╣реИ, рдФрд░ рд╣рдо рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╕реАрдЯреА рдХреА рдЦрд╛рддрд┐рд░ рдЗрддрдиреЗ рд╕рд╛рд░реЗ рд╕реНрдорд╛рд░реНрдЯрдлреЛрди рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдХреНрдпреЛрдВ рдЦрд╛рддреЗ рд╣реИрдВ? , , , - , ?
: AlarmManager
AlarmManager.
, тАФ sendBroadcast Action, BroadcastReceiver!
BroadcastReceiver, , , :
public class MyAlarmServiceReceiver extends BroadcastReceiver { private String CHANNEL_ID = "MyNotificationsChannel"; @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, "MyAlarmServiceReceiver onReceive", Toast.LENGTH_SHORT).show(); setNotify("Notify from AlarmManager", context); } }
AlarmManager Receiver 15 :
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); Intent intent = new Intent(AlarmActivity.this, MyAlarmServiceReceiver.class); PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(System.currentTimeMillis()); calendar.set(Calendar.HOUR_OF_DAY, 1); calendar.set(Calendar.MINUTE, 10); //alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, 1 * 60 * 1000, pendingIntent); // not repeating - just one run, if needed alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), AlarmManager.INTERVAL_FIFTEEN_MINUTES, pendingIntent);
: 15 .
( ) .
Logcat Reader , .
( ) , .
String LOG_TAG = "MYDEMOAPP"; Log.i(LOG_TAG, "Test info log"); Log.d(LOG_TAG, "Test debug log"); Log.e(LOG_TAG, "Test error log");
, , MainActivity, , .
рдирд┐рд╖реНрдХрд░реНрд╖
, Android. , , , : , . , , - Android-.