我面臨的問題找到如何調用用戶定義的方法啓動(否則,只需登錄一個消息)時,應用程序變得活躍是來自於背景,即前臺,如果用戶按下home鍵當應用程序再次到達前臺時,該應用程序會轉到後臺我想顯示一個警告框。可以請某些人告訴我如何執行此檢查,以瞭解應用程序是否已到達前臺或提供某些鏈接。我不明白要搜索什麼對於。有些網站提到我可以覆蓋OnResume()
。然而,即使我回到這個活動,每當我的活動從一個活動啓動到另一個時,都會調用此方法。我只需要在用戶從背景到前景時才調用此方法。如何識別活動從背景
回答
這是一個簡單的解決方案。
@Override
protected void onPause()
{
super.onPause();
PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
isScreenOn = powerManager.isScreenOn();
OnPause = true;
}
@Override
protected void onResume()
{
super.onResume();
OnResume = true;
if (!isScreenOn)
{
// your code;
}
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
if(OnPause == true && OnResume == true && !isScreenOn)
{
YourActivity.this.finish();
}
isScreenOn = false;
OnPause = false;
OnResume = false;
}
這裏isScreenOn,在onPause,是的onResume布爾值。 當你的手機屏幕得到鎖定,那麼應用程序進去的onPause(),它檢查「isScreenON」,然後變爲「的onStop()」,其中isScreenOn設置爲false。
當你的活動都在前臺「的onResume」之稱。它檢查isScreenON,它絕對完美。直到他進入password.This應用程序將僅適用於單個用戶(設備ID特定的)使用.Couldü請告訴我如何寫一個方法/(該法)
我會建議使用超時密碼。因此,當用戶使用該應用程序時,密碼將在x分鐘內保持「正常」。
試想一下,如果有人在早上推出的應用程序,可以追溯到homemenu,並在您仍想先登錄用戶晚上再啓動它?
超時日期可以很容易地存儲在SharedPreferences。 (也請不要將密碼存儲在SharedPreferences純文本,但保存它的哈希值。
是@ Rcdk.The用戶不能使用該應用程序如果您有解決方案,請確定該應用已進入活動狀態。 – Joyson 2013-04-08 09:32:39
解決方法很簡單
考慮四種方法的onCreate()的onResume,在onPause()的onSaveInstanceState(捆綁outState)。
你需要創建一個長的全局變量爲這項活動
現在目前的時間分配電流,這個變量中的onCreate(),如果你的Bundle savedInstanceState
爲null,其他明智的savedInstanceState
在的onResume檢查當前時間之間的差異millsec System.currentTimeMillis();
和這個全局變量,如果是大於說1秒(可根據您的需求會更高)顯示一個警告框詢問密碼
在的onPause()將System.currentTimeMillis();
保存爲全局變量。
在onSaveInstanceState(Bundle outState)
存儲全局變量的值捆綁在的onCreate恢復()。
示例代碼
import android.os.Bundle;
import android.widget.Toast;
import android.app.Activity;
public class MainActivity extends Activity {
long timeLastPause=0;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(savedInstanceState==null)
{
timeLastPause=System.currentTimeMillis();
//Toast.makeText(this, "App created just now", Toast.LENGTH_LONG).show();
}
else
{
timeLastPause= savedInstanceState.getLong("timeLastPause");
}
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
if((System.currentTimeMillis()-timeLastPause)>1000)
{
Toast.makeText(this, "the app becomes active that is comes to foreground from background", Toast.LENGTH_LONG).show();
}
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
timeLastPause=System.currentTimeMillis();
}
@Override
protected void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
super.onSaveInstanceState(outState);
outState.putLong("timeLastPause", timeLastPause);
}
}
[編輯]
現在好了任意數量的活動[:-0這是棘手的,希望它會工作。我在一些項目中實現這一點,工作得很好]
清單中
<application
android:name=".TrickyApplication"
...
>
現在,在每一個活動onResume()
TrickyApplication app = ((TrickyApplication) this.getApplication());
if (System.currentTimeMillis() - app.lastPause > 1000) {
Toast.makeText(this, "Show Password Dlg Now", Toast.LENGTH_LONG).show();
}
創建TrickyApplication.java
public class TrickyApplication extends Application {
public long lastPause;
@Override
public void onCreate() {
super.onCreate();
lastPause = 0;
}
}
現在在每一個活動onPause()
((TrickyApplication) this.getApplication()).lastPause = System
.currentTimeMillis();
注意,密碼對話框會也顯示,第一次可以用一些共享偏好管理這一點,並沒有設置它,直到你的用戶不顯示對話框
之前設置一個密碼左右,然後再檢查縣- 1. 背景中的活動識別
- 2. 活動從背景或其他活動
- 3. 如何動畫android活動背景
- 4. 如何識別啓動活動名稱?
- 5. 如何檢測和計數當活動從背景到前景
- 6. 如何更改活動背景顏色
- 7. 識別沒有激活的背景窗口
- 8. 活動識別 - 如何使用它
- 9. 如何識別活動中的RelativeLayout
- 10. 從圖庫設置背景到所有活動背景
- 11. 背景中的語音識別
- 12. JQuery不識別#FFFFFF的背景顏色
- 13. 自動裁剪圖像(自動識別圖像與背景)
- 14. 活動背景圖像
- 15. Android活動背景圖片
- 16. Android活動在背景中
- 17. Android中的活動背景
- 18. 設置活動的背景
- 19. 活動鏈接背景
- 20. a:活動背景圖片?
- 21. 活動的背景圖像
- 22. 活動背景變黑!
- 23. 如何從另一個活動更改活動的背景顏色?
- 24. 如何識別當前活動來自哪個活動?
- 25. Android。如何從不同的活動中獲取背景
- 26. 如何從活動中刪除全局背景色android
- 27. 如何從其他活動獲取背景?
- 28. 如何從透明覆蓋片段中禁用背景活動
- 29. Android活動識別問題
- 30. C#活動程序識別
我想你的代碼,我已經在這裏添加了一個吐司消息(//你的代碼;)然而,當我第一次啓動到活動即使再敬酒消息是executed.This吐司應該,如果我只執行從背景到前景 – Joyson 2013-04-17 10:17:56
boolean isScreenOn = true; public static boolean OnPause = false; public static boolean OnResume = false; 爲您的活動中的變量設置這些默認值。 – 2013-04-17 12:18:00
嘿薩加爾日Thnx一噸這個作品很酷!但是我想實現這個多activities.Do我需要在所有類別中寫這個邏輯,我想使它這樣的全球性,每當我去後臺而來前景應該調用我的代碼的任何活動。 – Joyson 2013-04-19 09:41:15