Android рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╛рд╕ рдХреЗ рдХреБрдЫ "рдиреБрдХрд╕рд╛рди"

рд╣рдорд╛рд░реА рдЯреАрдо рдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХ Android рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рд╣реИред рд╡рд┐рдХрд╛рд╕ рдФрд░ рдлрд┐рд░ рд╕рдорд░реНрдерди рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рд╣рдореЗрдВ рдХреБрдЫ рддрдХрдиреАрдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рд╣рдорд╛рд░реЗ рдХреАрдбрд╝реЗ рд╣реИрдВ, рдЬрд┐рдирд╕реЗ рд╣рдо рдмрдЪ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рдФрд░ рд╣рд┐рд╕реНрд╕рд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдВрдбреНрд░реЙрдЗрдб рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ, рдЬреЛ рдпрд╛ рддреЛ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рдЦрд░рд╛рдм рд╡рд░реНрдгрд┐рдд рд╣реИрдВ рдпрд╛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рд╡рд░реНрдгрд┐рдд рдирд╣реАрдВ рд╣реИрдВред

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдХрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдмрдЧреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдЬреЛ рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╣реБрдП рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВред

рд▓реЗрдЦ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╣реЛрдиреЗ рдХрд╛ рджрд┐рдЦрд╛рд╡рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдПрдВрдбреНрд░реЙрдЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЬреАрд╡рди рдХреА рдХрд╣рд╛рдиреА рд╣реИред


RTFM ( http://en.wikipedia.org/wiki/RTFM )


рдЪреВрдВрдХрд┐ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп рдЖрдкрдХреЛ рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдкрдХрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдХрд░рдгреЛрдВ рдХреА рдПрдХ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдЪрд▓ рд╕рдХрддрд╛ рд╣реИ, рдЖрдкрдХреЛ рд╕рдВрдЧрддрддрд╛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╣реБрдИ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ:

java.lang.NoClassDefFoundError: android.util.Patterns 


рдФрд░ рдХрд╛рд░рдг рд╕рд░рд▓ рд╣реИ, рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдХреНрд▓рд╛рд╕ android.util.Patterns рдПрдкреАрдЖрдИ рд╕рдВрд╕реНрдХрд░рдг 8 (рдПрдВрдбреНрд░реЙрдЗрдб 2.2.x) рдХреЗ рд╕рд╛рде рдЙрдкрд▓рдмреНрдз рд╣реИ, рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ 2.1 рд╕рдВрд╕реНрдХрд░рдг рдерд╛ред рд╣рдордиреЗ рдЗрд╕ рдХреЛрдб рдХреЛ try/catch рдореЗрдВ рд▓рдкреЗрдЯрдХрд░ рдирд┐рд╢реНрдЪрд┐рдд рдХрд┐рдпрд╛ рд╣реИред

рдпрд╣рд╛рдБ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдЕрд╕рд╛рд╡рдзрд╛рди рдкрдврд╝рдиреЗ рдХреЗ рдХрд╛рд░рдг рдПрдХ рдФрд░ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рд╣реИ:

 android.os.NetworkOnMainThreadException at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1077) at java.net.InetAddress.lookupHostByName(InetAddress.java:477) at java.net.InetAddress.getAllByNameImpl(InetAddress.java:277) at java.net.InetAddress.getAllByName(InetAddress.java:249) 


рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╕рдВрд╕реНрдХрд░рдг 3.0 рд╕реЗ Android рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдЦреНрдд рдореЛрдб ( http://developer.android.com/reference/android/os/StrictMode.html ) рд╕рдХреНрд╖рдо рд╣реЛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореБрдЦреНрдп UI рдереНрд░реЗрдб рд╕реЗ рд╕реАрдзреЗ рдиреЗрдЯрд╡рд░реНрдХ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдХреБрдЫ рд╕рдордп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдореБрдЦреНрдп рдереНрд░реЗрдб рдЕрд╡рд░реБрджреНрдз рд╣реИ рдФрд░ рдЕрдиреНрдп рдШрдЯрдирд╛рдУрдВ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рд╣рдордиреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ рдмрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдПрдХ рд╕реНрдерд╛рди рдкрд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдиреЗрдЯрд╡рд░реНрдХ рдХреЙрд▓ рдмрдиреА рд░рд╣реАред рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЗрд╕ рддрдереНрдп рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рд╣рдордиреЗ рдЗрд╕ рдХреЛрдб рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдереНрд░реЗрдб рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ред

рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдШреБрдорд╛рдПрдВ - рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ рдФрд░ рдЕрдзрд┐рдХ рдкрд░рд┐рдЪрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?


рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рд╕реНрдХреНрд░реАрди рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдмрджрд▓рдирд╛ рдПрдХ рдРрд╕реА рдЪреАрдЬ рд╣реИ рдЬреЛ рдЕрдХреНрд╕рд░ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдкрд░рд┐рдЪрд┐рдд рд╣реИ рдХрд┐ рдЗрд╕реЗ рдПрдкреАрдЖрдИ рдореЗрдВ рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╛рдиреА рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓рддрд╛ рд╕реЗ рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдирд╣реАрдВред рдХрдИ рдмрд╛рд░реАрдХрд┐рдпрд╛рдВ рд╣реИрдВред

рдорд╛рди рд▓реАрдЬрд┐рдП рд╣рдореЗрдВ рдПрдХ рдРрд╕рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдЬреЛ рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреА рд╕реВрдЪреА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрд╕реЗ рд╕реНрдХреНрд░реАрди рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╛рдиреА рдЬрдм Activity рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ ( onCreate() рд╡рд┐рдзрд┐ рдореЗрдВ) рд╣рдо рд╕реНрдЯреНрд░реАрдо рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ (рддрд╛рдХрд┐ UI рд╕реНрдЯреНрд░реАрдо рдХреЛ рдмреНрд▓реЙрдХ рди рдХрд░реЗрдВ), рдЬреЛ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░реЗрдЧрд╛ред рдпрд╣ рдзрд╛рдЧрд╛ рдХреБрдЫ рд╕рдордп рд╕реЗ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо ProgressDialog рдореЗрдВ рд▓реЛрдбрд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВрдЧреЗред рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рдФрд░ рдЕрджреНрднреБрдд рд╣реИред

рд▓реЗрдХрд┐рди, рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреБрдорд╛ рджрд┐рдпрд╛ рдФрд░ рдпрд╣рд╛рдВ рд╣рдореЗрдВ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ ProgressDialog рдлрд┐рд░ рд╕реЗ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рдФрд░ рд╣рдордиреЗ рдлрд┐рд░ рд╕реЗ рдЕрдкрдирд╛ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИ? рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдХреЗ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕реВрдЪреА рдХреЛ рджреЗрдЦрдирд╛ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред

рдФрд░ рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ onCreate() рд╡рд┐рдзрд┐ рдХреЛ рди рдХреЗрд╡рд▓ рддрдм рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм Activity , рдмрд▓реНрдХрд┐ рд╕реНрдХреНрд░реАрди рдХреЛ рдШреБрдорд╛рдП рдЬрд╛рдиреЗ рдкрд░ рднреА! рд▓реЗрдХрд┐рди рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рд╕реЗ рд▓реЛрдб рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рджрд┐рдЦрд╛рдирд╛ рд╣реИред

рдпрджрд┐ рд╣рдо рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЦреЛрдЬ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╡рд░реНрдгрди рдХреЗ рд▓рд┐рдП рдХрдИ рд▓рд┐рдВрдХ рдорд┐рд▓реЗрдВрдЧреЗ рдФрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреА рдПрдХ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рднреАред рдФрд░ рд╕рдмрд╕реЗ рдмреБрд░реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓рд┐рдВрдХ рдЧрд▓рдд рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ - http://codesex.org/articles/33-android-rotate

onConfigurationChanged() рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдХреНрд░реАрди рд░реЛрдЯреЗрд╢рди рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рди рдХрд░реЗрдВ! рдпрд╣ рдЧрд▓рдд рд╣реИ! рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ " рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдХреЗрд╡рд▓ рдЕрдВрддрд┐рдо рдЙрдкрд╛рдп рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред " Http://developer.android.com/guide/topics/manifest/activity-element.html#config

рд▓реЗрдХрд┐рди рд╕рд╣реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдпрд╣рд╛рдБ рд╡рд░реНрдгрд┐рдд рд╣реИ - http://developer.android.com/guide/topics/resources/runtime-changes.html рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ рдЕрднреНрдпрд╛рд╕ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ, рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред

рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рд╕реНрдХреНрд░реАрди рдХреЛ onRetainNonConfigurationInstance() рд╕реЗ рдкрд╣рд▓реЗ onRetainNonConfigurationInstance() Android рдЖрдкрдХреА Activity рдХреЗ onRetainNonConfigurationInstance() рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛ред рдФрд░ рдЖрдк рдЗрд╕ рд╡рд┐рдзрд┐ рд╕реЗ рдбреЗрдЯрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓реЛрдб рдХреА рдЧрдИ рд╡рд╕реНрддреБрдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА) рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЖрдкрдХреА Activity рдХреЗ onCreate() рд╡рд┐рдзрд┐ рдореЗрдВ 2 рдХреЙрд▓ рдХреЗ рдмреАрдЪ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред рдлрд┐рд░, рдЬрдм рдЖрдк getLastNonConfigurationInstance() рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ onCreate() рддреЛ рдЖрдк getLastNonConfigurationInstance() рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рд╕рд╣реЗрдЬреЗ рдЧрдП рдбреЗрдЯрд╛ рдХреЛ рд▓реМрдЯрд╛ рджреЗрдЧрд╛ред рдпрд╛рдиреА Activity рдмрдирд╛рддреЗ рд╕рдордп Activity рдЖрдк getLastNonConfigurationInstance() рдХреЙрд▓ getLastNonConfigurationInstance() рдФрд░ рдпрджрд┐ рдпрд╣ рдЖрдкрдХреЛ рдбреЗрдЯрд╛ getLastNonConfigurationInstance() , рддреЛ рдпрд╣ рдбреЗрдЯрд╛ рдкрд╣рд▓реЗ рд╣реА рд▓реЛрдб рд╣реЛ рдЪреБрдХрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдЗрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдиреЗ рдбреЗрдЯрд╛ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдбрд╛рдЙрдирд▓реЛрдб рд╢реБрд░реВ рдХрд░реЗрдВред

рд▓реЗрдХрд┐рди рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рд╕реНрдерд┐рддрд┐ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИред рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдШреБрдорд╛рддрд╛ рд╣реИ рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 2 рд╡рд┐рдХрд▓реНрдк рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдкрд╣рд▓рд╛ рд╡рд┐рдХрд▓реНрдк рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдбреЗрдЯрд╛ рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ (рд╣рдорд╛рд░реА рд╕реНрдЯреНрд░реАрдо рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИ рдЬреЛ рдбреЗрдЯрд╛ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрд╕реА рд╕рдордп ProgressDialog рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ) рдпрд╛ рдбреЗрдЯрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд▓реЛрдб рд╣реИ рдФрд░ рд╣рдордиреЗ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рд╕реВрдЪреА рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рд╣реИред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореБрдбрд╝рддреЗ рд╕рдордп, рд╣рдореЗрдВ рдПрдХ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдзрд╛рдЧреЗ рдХреЗ рд▓рд┐рдВрдХ рдХреЛ рдмрдЪрд╛рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкрд╣рд▓реЗ рд╕реЗ рд▓реЛрдб рдХреА рдЧрдИ рд╕реВрдЪреА рдХрд╛ рд▓рд┐рдВрдХред рд╣рдо рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВред

рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдорд╛рд░реЗ рдХреЛрдб рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рд╕рд░рд▓ рдФрд░ рд╕рд╣рдЬ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрдм рд╕реНрдХреНрд░реАрди рдХреЗ рдУрд░рд┐рдПрдВрдЯреЗрд╢рди рдореЗрдВ рдмрджрд▓рд╛рд╡ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд╣рдордиреЗ рдбреЗрдЯрд╛ рд▓реЛрдбрд┐рдВрдЧ рд╕реНрдЯреНрд░реАрдо рдХреЛ рд╕реЗрд╡ рдХрд░ рд▓рд┐рдпрд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╣рдо onCreate() рд╕рд╛рде рдлрд┐рд░ рд╕реЗ ProgressDialog рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ! рдФрд░ рдЕрдЧрд░ рдЖрдк рдпрд╣рд╛рдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд╛рдиреЛрдВ рд╕реЗ рдбреЗрдЯрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдбреЗрдЯрд╛ рд▓реЛрдбрд┐рдВрдЧ рд╕реНрдЯреНрд░реАрдо рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдИ - рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реНрдХреНрд░реАрди рд░реЛрдЯреЗрд╢рди рдХреА рд╕реЗрд╡рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдмрд╕ рдмрд╣реБрдд рдмрдбрд╝реА рд╣реЛ рдЬрд╛рддреА рд╣реИред

рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдореБрдЭреЗ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛ рдХрд┐ рдпрд╣ рдЗрддрдирд╛ рдХрдард┐рди рдХреНрдпреЛрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ред

рдзрд╛рд░рд╛рдУрдВ рдпрд╛ AsyncTask рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдФрд░ рдЕрдзрд┐рдХред


рдЖрдЗрдП рдбреЗрдЯрд╛ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдереЛрдбрд╝рд╛ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рджреЗрдЦреЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд "рдЖрд╢реНрдЪрд░реНрдп" рд╣рдореЗрдВ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рдерд╛ред

рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдПрдХ рд╕рд╛: рдореБрдЦреНрдп UI рдереНрд░реЗрдб рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдПрдХ рдереНрд░реЗрдб рдХреЗ рдирд┐рд░реНрдорд╛рдг рдФрд░ рд╕рдВрдЪрд╛рд▓рди рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдЧ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ - AsyncTask ( http://developer.android.com/reference/android/os/AsyncTask.html )

рдЗрд╕рдХрд╛ рд╕рд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рддреИрдпрд╛рд░ рддрд░реАрдХреЗ рд╣реИрдВ onPreExecute() рдФрд░ onPostExecute(Result) рдЬреЛ рдореБрдЦреНрдп UI рдереНрд░реЗрдб рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЬреЛ рдХреБрдЫ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ doInBackground (Parad ...) рд╡рд┐рдзрд┐ рд╣реИ рдЬрд┐рд╕рдХреЗ рдЕрдВрджрд░ рдореБрдЦреНрдп рдХрд╛рдо рдФрд░ рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдзрд╛рдЧреЗ рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдирдореВрдирд╛ рдХреЛрдб рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

 private class MyTask extends AsyncTask<Void, Void, Void> { private ProgressDialog spinner; @Override protected void onPreExecute() { //     ProgressDialog //       //     UI  spinner = new ProgressDialog(MyActivity.this); spinner.setMessage(" ..."); spinner.show(); } @Override protected Void doInBackground(Void... text) { //         //       } @Override protected void onPostExecute(Void result) { //  .  ProgressDialog. //     UI  spinner.dismiss(); } } 


рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рдФрд░ рд╕реБрдВрджрд░ рд╣реИред

рд▓реЗрдХрд┐рди рдЕрдм рдереЛрдбрд╝рд╛ рдЕрднреНрдпрд╛рд╕ред рдпрд╣рд╛рдБ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реИ:
 android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@40515bd0 is not valid; is your activity running? at android.view.ViewRoot.setView(ViewRoot.java:534) at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177) at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91) at android.view.Window$LocalWindowManager.addView(Window.java:424) at android.app.Dialog.show(Dialog.java:241) at ru.reminded.android.social.SocialDataLoader.onPreExecute(SocialDataLoader.java:106) at android.os.AsyncTask.execute(AsyncTask.java:391) at ru.reminded.android.util.SocialAdapterUtils.loadAdapterData(SocialAdapterUtils.java:52) at ru.reminded.android.util.SocialAdapterUtils.access$0(SocialAdapterUtils.java:50) at ru.reminded.android.util.SocialAdapterUtils$1.onComplete(SocialAdapterUtils.java:41) 


рдФрд░ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЬрдм рд╣рдо onPreExecute() рд╡рд┐рдзрд┐ рдореЗрдВ onPreExecute() , рддреЛ MyActivity рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдпрд╣ ProgressDialog рдкрд╣рд▓реЗ MyActivity рд╣реА рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реИ рдФрд░ рдпрд╣ рд╕реНрдХреНрд░реАрди рдкрд░ рдирд╣реАрдВ рд╣реИ! рдареАрдХ рд╣реИ, рдореИрдВ рдЕрдм рднреА рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ onPostExecute() рдХреЙрд▓ рдХрд░рдиреЗ рдкрд░ рдпрд╣ рдХреИрд╕реЗ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╛рдиреА рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рд╣рдо рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░ рд░рд╣реЗ рдереЗ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рд╡рд╛рдкрд╕ рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ рдФрд░ рд╣рдорд╛рд░реЗ ProgressDialog рдиреЗ рд╕реНрдХреНрд░реАрди рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдпрд╣ рдХреИрд╕реЗ рд╕рд╣реА рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рд▓реЛрдб рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм Activity рдмрдВрдж рд╣реЛрдиреЗ рдкрд░ рдпрд╣ рдХреЛрдб рддреБрд░рдВрдд рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдореЗрд░реЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИред

рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╣рдореЗрдВ рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рд╕реНрдкрд┐рдирд░.рд╢реЛ spinner.show() рдФрд░ spinner.dismiss() рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ try/catch рд╕рд╛рде рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдмреЗрд╢рдХ, рд╕рдорд╛рдзрд╛рди рдмрд╣реБрдд рд╕реБрдВрджрд░ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдХрд╛рдлреА рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╣реИред

рд╡реИрд╕реЗ, рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рдлреЗрд╕рдмреБрдХ рдПрд╕рдбреАрдХреЗ рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдХреЛрдб рд╣реИ, рдЬрд┐рд╕реЗ рдЕрдиреНрдп рдЕрдиреБрднрд╡реА рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдРрд╕реА рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рднреА рдереАрдВ рдЬрдм ProgressDialog рдмрдВрдж рд╣реЛрдиреЗ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреНрд░реИрд╢ рд╣реЛ рдЧрдпрд╛ред рд╣рдореЗрдВ рдЙрдирдХреЗ рдХреЛрдб рдореЗрдВ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЬреЛрдбрд╝рдирд╛ рдерд╛ред рддреЛ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреЗрд╡рд▓ рд╣рдо рдореЗрдВ рд╣реА рдирд╣реАрдВ рд╣реИред

рдпрд╣рд╛рдВ рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдЬреЛрдбрд╝реЗрдВ рдЬреЛ рдкрд╣рд▓реЗ рд╡рд░реНрдгрд┐рдд рдереАред рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ ProgressDialog рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдбреЗрдЯрд╛ рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдмрд╛рд░реА рдереАред рдЗрд╕рд╕реЗ рдпрд╣рд╛рдВ рд╣реЗрд▓реНрдкрд░ рдХреЛрдб рднреА рдЬреБрдбрд╝ рдЬрд╛рдПрдЧрд╛ред

рдФрд░ рдпрд╣ рдпрд╛рдж рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ doInBackground() рд╡рд┐рдзрд┐ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдереНрд░реЗрдб рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реБрдИ рд╣реИ, рддреЛ рдЖрдк рд╕реАрдзреЗ рд╡рд╣рд╛рдВ рд╕реЗ рдЕрд▓рд░реНрдЯ рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдпреВрдЖрдИ рд╕реНрдЯреНрд░реАрдо рдирд╣реАрдВ рд╣реИред рдЖрдкрдХреЛ рддреНрд░реБрдЯрд┐ рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ onPostExecute(Void result) рд╡рд┐рдзрд┐ рдореЗрдВ рд▓реЛрдб рд╕реНрдЯреНрд░реАрдо рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреБрдЫ рджрд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╛рдиреА рдлрд┐рд░ рд╕реЗ, рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рд╣рд╛рдпрдХ рдХреЛрдб рдФрд░ рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ ...

AlarmManager


рдФрд░ рдРрд╕реЗ рдХреНрд╖рдг рд╣реИрдВ рдЬреЛ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рднреА рд╡рд░реНрдгрд┐рдд рдирд╣реАрдВ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ рд╣рдо рдЕрд▓рд╛рд░реНрдо рдореИрдирдЬрд░ ( http://developer.android.com/reference/android/app/AlarmManager.html ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕рдВрджреЗрд╢ рдЬрд╛рд░реА рдХрд░рдиреЗ рдореЗрдВ рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рдмрд╛рдж рдорджрдж рдХрд░рддрд╛ рд╣реИ рдЬрдм рд╣рдорд╛рд░рд╛ рдЖрд╡реЗрджрди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрдВрдж рд╣реИред

рдпрд╣ рдЕрд▓рд╛рд░реНрдо рдореИрдирдЬрд░ рдПрдХ рдмрд╣реБрдд рд╣реА рдЙрдкрдпреЛрдЧреА рдЪреАрдЬ рд╣реИ, рдПрдХрдорд╛рддреНрд░ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдХрднреА-рдХрднреА рдпрд╣ рдЗрд╕рдореЗрдВ рдореМрдЬреВрдж рд╕реВрдЪрдирд╛рдУрдВ рдХреЛ "рдЦреЛ" рджреЗрддрд╛ рд╣реИ! рд╣рдордиреЗ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рдордп рдмрд┐рддрд╛рдпрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдФрд░ рдХреНрдпреЛрдВ рд╣реЛрддрд╛ рд╣реИ, рд╕рднреА рджрд╕реНрддрд╛рд╡реЗрдЬ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдлрд╡рд╛рд╣ рд╣реБрдИ рдФрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдХрд╛рдлреА рд╕рдВрдпреЛрдЧ рд╕реЗ, рд╣рдо "рдЗрд╕ рдЪрд░реНрдЪрд╛" - http://stackoverflow.com/questions/9101818/how-to-create-a-persistent-alarmmanager рдкрд░ рдЖ рдЧрдПред

рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛рд░реНрдп рдкреНрд░рдмрдВрдзрдХ (рдЬреЛ рд╕рдВрднрд╡ рд╣реИ рдФрд░ рдХрд╛рдлреА рд╕рд╛рдорд╛рдиреНрдп рд╣реИ) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрд╡реЗрджрди рдХреЛ рдорд╛рд░рддрд╛ рд╣реИ, рддреЛ рдЕрд▓рд╛рд░реНрдо рдореИрдирдЬрд░ рдореЗрдВ рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рд╕рднреА рд╕реВрдЪрдирд╛рдПрдВ DELETED рд╣реИрдВ! рдпрд╣ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рд╣реИ! рдореБрдЭреЗ рд╡рд╣рд╛рдВ рдХреА рдПрдХ рдЯрд┐рдкреНрдкрдгреА рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкрд╕рдВрдж рдЖрдИ: "рдкреБрдирдГ рдЕрд▓рд╛рд░реНрдо рд░рджреНрдж: рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВрдиреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдЯреАрдо рдХреЗ рдСрдлрд┐рд╕ рдХреЗ рдШрдВрдЯреЗ g + рд╣реИрдВрдЧрдЖрдЙрдЯ рдкрд░ рдпрд╣ рдкреВрдЫрд╛ рдФрд░ рд╡реЗ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреНрд░рдорд┐рдд рднреА рд▓рдЧ рд░рд╣реЗ рдереЗред рдХреНрдпрд╛ рдпрд╣ рдХрд╣реАрдВ рднреА рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИ? "

рдЗрд╕рд▓рд┐рдП рдЕрдм рдЬрдм рдЖрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реЛрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рд╣реЛрдиреЗ рдпрд╛ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП AlarmManager рдореЗрдВ рдПрдХ API рднреА рдирд╣реАрдВ рд╣реИред

рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ ...


рдпрд╣рд╛рдВ рдХреБрдЫ рдФрд░ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВ рдЬреЛ рд╣рдордиреЗ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдкрдВрдЬреАрдХреГрдд рдХреА рд╣реИрдВред рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ, рд╣рдо рд╡рд┐рднрд┐рдиреНрди рд╕рд╛рдорд╛рдЬрд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП OAuth рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рд▓рд┐рдП Android рдореЗрдВ рдПрдХ рдкреВрд░реНрдгрдХрд╛рд▓рд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реЛрддреЗ рд╣реИрдВ (рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ OAuth рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП)ред рдЙрд╕реА рд╕рдордп, рдпрд╣ рд╕рдордп-рд╕рдордп рдкрд░ "рдЧрд┐рд░" рдЬрд╛рддрд╛ рд╣реИ

 android.util.AndroidRuntimeException: { what=1004 when=-14ms arg2=1 } This message is already in use. at android.os.MessageQueue.enqueueMessage(MessageQueue.java:187) at android.os.Handler.sendMessageAtTime(Handler.java:457) at android.os.Handler.sendMessageDelayed(Handler.java:430) at android.os.Handler.sendMessage(Handler.java:367) at android.os.Message.sendToTarget(Message.java:349) at android.webkit.WebView$5.onClick(WebView.java:1250) at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:172) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:130) at android.app.ActivityThread.main(ActivityThread.java:3703) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:507) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) at dalvik.system.NativeStart.main(Native Method) 


рдПрдХ рдФрд░ рдмрд╛рдд:

 java.lang.NullPointerException at android.os.Message.sendToTarget(Message.java:348) at android.webkit.WebView$4.onClick(WebView.java:1060) at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:158) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:123) at android.app.ActivityThread.main(ActivityThread.java:4627) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:521) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) at dalvik.system.NativeStart.main(Native Method) 


рдФрд░ рдпрд╣ рднреА:

 java.lang.IndexOutOfBoundsException: setSpan (-1 ... -1) starts before 0 at android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:949) at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:522) at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:514) at android.text.Selection.setSelection(Selection.java:74) at android.text.Selection.setSelection(Selection.java:85) at android.widget.TextView.performLongClick(TextView.java:8621) at android.webkit.WebTextView.performLongClick(WebTextView.java:617) at android.webkit.WebView.performLongClick(WebView.java:4471) at android.webkit.WebView$PrivateHandler.handleMessage(WebView.java:8285) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:150) at android.app.ActivityThread.main(ActivityThread.java:4389) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:507) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607) at dalvik.system.NativeStart.main(Native Method) 


рдирд┐рд╖реНрдХрд░реНрд╖


рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╕рдм рдХреБрдЫ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдореБрдЭреЗ рдПрдВрдбреНрд░реЙрдЗрдб рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдкрд╕рдВрдж рд╣реИред рдЕрд╕рд▓ рдореЗрдВ, рдПрдкреАрдЖрдИ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕реЛрдЪрд╛ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред

рдмрд╕ рд╣рд░ рдЬрдЧрд╣ рдпрд╣ try/catch рдХрд╛ рдЙрдкрдпреЛрдЧ try/catch рд▓рд╛рдпрдХ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЬрд╣рд╛рдВ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИред

рдФрд░ рдлрд┐рд░ рднреА ... рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдирд╣реАрдВ - рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕ рддрд░рд╣ - рд╣рдореЗрд╢рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП ACRA рд▓рд╛рдЗрдмреНрд░реЗрд░реА ( http://code.google.com/p/acra/ ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж!

Source: https://habr.com/ru/post/In146632/


All Articles