閃退,多指在移動(dòng)設(shè)備(如iOS、Android設(shè)備)中,在打開應(yīng)用程序時(shí)出現(xiàn)的突然退出中斷的情況(類似于Windows的應(yīng)用程序崩潰)。多表現(xiàn)為:應(yīng)用程序畫面一閃而過,隨即退回到桌面。
創(chuàng)新互聯(lián)長(zhǎng)期為1000多家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為原平企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì),原平網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
閃退的原因和處理方法
1、緩存垃圾過多
平時(shí)在使用軟件的過程中,會(huì)產(chǎn)生一些垃圾文件,如果長(zhǎng)時(shí)間不清理會(huì)導(dǎo)致手機(jī)越來越卡,也會(huì)出現(xiàn)閃退狀況。
進(jìn)入設(shè)置–應(yīng)用程序——全部——找到有問題的應(yīng)用程序,清除數(shù)據(jù)或者緩存。(注:清除數(shù)據(jù),會(huì)清除掉應(yīng)用的個(gè)人設(shè)置、賬戶信息等。)
2、運(yùn)行程序過多
如果不進(jìn)行設(shè)置,很多軟件都會(huì)自己運(yùn)行,而手機(jī)后臺(tái)程序過多會(huì)造成內(nèi)存不足,從而造成應(yīng)用閃退。如出現(xiàn)軟件閃退,可先清理內(nèi)存后再試試。
3、手機(jī)殺毒軟件
部分手機(jī)軟件存在著惡意代碼,會(huì)被殺毒軟件攔截因而不能正常進(jìn)入,應(yīng)該通過綠色下載平臺(tái)或者使用軟件商店來下載安全系數(shù)較高的游戲。
(注:以上三個(gè)原因都現(xiàn)在都可以通過安全軟件清理,輕松解決。但需要注意在刪除一些大型文件時(shí)請(qǐng)謹(jǐn)慎。)
4、應(yīng)用版本問題
如果應(yīng)用的版本較低,會(huì)導(dǎo)致應(yīng)用軟件不兼容,造成閃退。如果是版本太舊,更新為新版本即可。
如新版本如果出現(xiàn)閃退,是應(yīng)用改版本還在調(diào)試中,無需擔(dān)心,會(huì)很快修復(fù)。
5、網(wǎng)速問題
部分軟件需要一個(gè)穩(wěn)定的網(wǎng)絡(luò),使用的是2G/3G網(wǎng)絡(luò),造成閃退的可能性比較大,建議在有WiFi的情況下玩比較好。
6、缺少數(shù)據(jù)包
一些大型游戲需要數(shù)據(jù)包才能運(yùn)行。所以要先安裝好數(shù)據(jù)包才能使用。
7、系統(tǒng)不兼容
部分軟件對(duì)版本有一定的要求,如果系統(tǒng)版本過低,軟件是不能支持的,所以會(huì)閃退。
8、分辨率不兼容
一些軟件對(duì)手機(jī)分辨率有一定的要求,如果手機(jī)分辨率不兼容,有部分軟件就容易出現(xiàn)閃退或其它錯(cuò)誤。
Android Studio中,隨時(shí)隨地的退出程序(記得導(dǎo)入相應(yīng)的包,可以設(shè)置自動(dòng)導(dǎo)入所需的包的,下面的代碼還沒有導(dǎo)入包的部分):
①新建一個(gè) ActivityCollector 類,作為活動(dòng)管理器,代碼如下所示:
public class ActivityCollector {
public static ListActivity activities = new ArrayList();
public static void addActivity(Activity activity) {
activities.add(activity);
}
public static void removeActivity(Activity activity) {
activities.remove(activity);
}
public static void finishAll() {
for (Activity activity : activities)
{
if(!activity.isFinishing())
{
activity.finish();
}
}
activities.clear();
//以下是殺死當(dāng)前程序進(jìn)程的代碼,保證程序徹底退出。
android.os.Process.killProcess(android.os.Process.myPid());
}
}
②再新建一個(gè)類BaseActivity,并讓所有活動(dòng)繼承這個(gè)類,也就是其他的全部活動(dòng)都改為extends BaseActivity,而不是原來的extends AppCompatActivity。
public class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("BaseActivity", getClass().getClass().getSimpleName());
ActivityCollector.addActivity(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
ActivityCollector.removeActivity(this);
}
}
③在你想要退出程序的頁面(Activity)的setContentView(R.layout.*****); 下面加上如下代碼,從而實(shí)現(xiàn)點(diǎn)擊一個(gè)按鈕退出整個(gè)程序。
Button button3 = (Button) findViewById(R.id.*****);
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ActivityCollector.finishAll();
}
});
//*號(hào)部分看具體情況而定
大家都知道 Android 的 Activity 是存著歷史棧的,比如從 A - B - C,C 完成 finish 后回到 B,把所有的Activity 都 finish了,程序就自然退出了。 當(dāng)然在 finish 的同時(shí)也需要是否自己程序的其他資源。所以需要想個(gè)辦法把 Activity 給存起來。然后在程序退出的地方調(diào)用它們的 finish()方法。
使用全局變量。對(duì)了,第一個(gè)想到的就是繼承 Application,代碼入下。
public class AgentApplication extends Application { private ListActivity activities = new ArrayListActivity(); public void addActivity(Activity activity) {activities.add(activity);} @Overridepublic void onTerminate() {super.onTerminate();for (Activity activity : activities) {activity.finish();}onDestroy();System.exit(0);}}
然后在 Activity onCreate 的時(shí)候來調(diào)用 addActivity (),有人可能想到這個(gè)Application需要在所有的 Activity onCreate的時(shí)候都使用,需要做一個(gè)單例實(shí)例。其實(shí)根本不需要。在 Activity 中使用 this.getApplication() 就可以了。
最后在你需要推出程序的地方調(diào)用 application.onTerminate() 就可以了。記住:super.onTerminate() 必須調(diào)用,代碼中的 onDestroy()是我自己的釋放其他資源的方法,不是系統(tǒng)的。
運(yùn)行以上代碼后,在LogCat 中會(huì)出現(xiàn)一行提示:
Process 包名 (pid xxxxx) has died. 證明你的程序退出了?,F(xiàn)在你可以測(cè)試了。
安卓系統(tǒng)退出后臺(tái)程序方法步驟如下: 1、長(zhǎng)按手機(jī)的長(zhǎng)按HOME鍵,也就是手機(jī)屏幕下中間的那個(gè)按鍵,這時(shí)就會(huì)手機(jī)出現(xiàn)手機(jī)的任務(wù)管理器,可以選擇要關(guān)閉的程序?qū)⑺系健独洹分羞@樣就關(guān)閉了應(yīng)用程序,也可以點(diǎn)擊《全部移除》這樣所有運(yùn)行軟件就全部結(jié)束了。或者,打開手機(jī)中的《設(shè)定》點(diǎn)擊《更多》找到任務(wù)管理器。進(jìn)入任務(wù)管理器后《點(diǎn)擊》要關(guān)閉的程序,點(diǎn)擊《強(qiáng)制停止》再《確定》。這樣要關(guān)閉的應(yīng)用程序就結(jié)束了。 2、可以用360手機(jī)衛(wèi)士、安卓?jī)?yōu)化大師和騰訊手機(jī)管家等工具
若使用的是vivo手機(jī),可以從屏幕底部中間往上滑后停頓調(diào)出后臺(tái)應(yīng)用(部分機(jī)型需點(diǎn)擊左鍵),按住軟件圖標(biāo)上滑,即可關(guān)閉后臺(tái)運(yùn)行的應(yīng)用。
如果按返回鍵(或者全面屏手勢(shì)中的左右側(cè)邊緣向內(nèi)滑)無反應(yīng),可以考慮按菜單鍵(或者全面屏手勢(shì)中的底部向上滑動(dòng)并停頓),切換到應(yīng)用進(jìn)程總覽界面,然后按“x”或者向側(cè)面滑動(dòng)那一個(gè)APP的小窗口,強(qiáng)制關(guān)閉那一個(gè)APP進(jìn)程。
名稱欄目:android應(yīng)用退出,android 退出app
本文URL:http://m.rwnh.cn/article28/dsdhhcp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、搜索引擎優(yōu)化、靜態(tài)網(wǎng)站、網(wǎng)站策劃、網(wǎng)站維護(hù)、網(wǎng)站設(shè)計(jì)公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)