我有一個FragmentA..that是一個列表片段,它加載一個聯繫人列表,並顯示它們類似於電話簿將做什麼。現在如果我點擊一個聯繫人說「John Doe」應用程序將啓動另一個應用程序(在我的情況下爲Sim Tool Kit),並顯示用戶的姓名和號碼以供用戶在使用STK時使用。一旦用戶完成使用STK或導航迴應用程序,然後應該消失。但在我的情況下,吐司仍然存在,並且在某些情況下,即使我退出我的應用時,吐司也會無限顯示。我該如何糾正?下面是我的代碼的片段堅持吐司列表項點擊哪個啓動另一個應用程序
list.setOnItemClickListener(new OnItemClickListener() {
@SuppressLint("RtlHardcoded")
@SuppressWarnings("deprecation")
public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
@SuppressWarnings("unchecked")
HashMap<String, String> h = (HashMap<String, String>) list.getAdapter().getItem(position);
String Name="",Number="";
Name = h.get(KEY_NAME);
Number = h.get(KEY_PHONENUMBER);
toast = Toast.makeText(context, "", Toast.LENGTH_LONG);
toast.setGravity(Gravity.TOP|Gravity.RIGHT, 0, 0);
toast.setView(layout);
toast.cancel();
userNameText.setText(Name);
userNumberText.setText(Number);
PersistToast();
getActivity().startService(ServiceIntent);
try {
if (!ReceiverON) {
getActivity().registerReceiver(objReceiver, filter);
ReceiverON=true;
}
} catch (IllegalArgumentException illegalargumentexception) {
illegalargumentexception.printStackTrace();
} catch (Exception exception) {
exception.printStackTrace();
}
}
}
的持續吐司方法
private void PersistToast() {
long delay = 1000;
long period = 1000;
mDoTask = new TimerTask() {
@Override
public void run() {
toast.show();
}
};
mT.scheduleAtFixedRate(mDoTask, delay, period);
}
接收機
private class Receiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent arg1) {
if (!(currentTask().equals("com.android.stk"))){
try {
if(toast != null) {
toast.cancel();
mDoTask.cancel();
}
} catch(Exception e) {
}
}
}
}
public String currentTask() {
return ((android.app.ActivityManager.RunningTaskInfo)((ActivityManager)context.getSystemService("activity")).getRunningTasks(1).get(0)).topActivity.getPackageName().trim();
}
服務坪接收週期性,使得接收機依次檢查,如果當前前面的活動是STK,如果不是那麼它取消了吐司和計時器任務
我不認爲你應該改變的是,敬酒是爲了工作的方式;這實際上只是對用戶的快速響應。您應該設計它,以便屏幕上有一個信息窗口,並且需要它。 – 2014-10-16 13:27:29
Toast請求堆棧意味着它們可以在應用程序被殺後很長一段時間顯示,更不用說留下了。 – dominik4142 2014-10-16 13:28:32
@JaySnayder and dominik您的意見與站在什麼不用烤麪包。這個問題真的不是祝酒,而是在瀏覽應用程序時取消它的正確位置和方式。在我的情況下堅持烤麪包已經使用了一個時間任務,所以殺死時間任務結束了烤麪包。我只是無法找到正確的方式 – 2014-10-16 13:33:12